Skip to content

📚 常用类与字符串处理

Object 类

toString 方法

java
public class Person {
    private String name;
    private int age;
    
    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }
}

// 使用
Person person = new Person("张三", 25);
System.out.println(person);  // 自动调用 toString()

equals 和 hashCode

java
public class Person {
    private String name;
    private int age;
    
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }
    
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

String 类

字符串创建

java
// 方式1:字面量(推荐)
String str1 = "Hello";

// 方式2:new 关键字
String str2 = new String("Hello");

// 方式3:从字符数组
char[] chars = {'H', 'e', 'l', 'l', 'o'};
String str3 = new String(chars);

字符串不可变性

java
String str = "Hello";
str = str + " World";  // 创建新对象,原对象不变

字符串常用方法

java
String str = "Hello World";

// 长度
int length = str.length();  // 11

// 比较
boolean equals = str.equals("Hello World");  // true
boolean equalsIgnoreCase = str.equalsIgnoreCase("hello world");  // true
int compare = str.compareTo("Hello");  // 返回差值

// 查找
boolean contains = str.contains("World");  // true
int index = str.indexOf("World");          // 6
int lastIndex = str.lastIndexOf("l");      // 9

// 提取
String sub = str.substring(0, 5);    // "Hello"
char ch = str.charAt(0);            // 'H'

// 替换
String replaced = str.replace("World", "Java");  // "Hello Java"

// 分割
String[] parts = str.split(" ");  // ["Hello", "World"]

// 转换
String upper = str.toUpperCase();  // "HELLO WORLD"
String lower = str.toLowerCase();  // "hello world"
String trimmed = "  Hello  ".trim();  // "Hello"

// 检查
boolean isEmpty = str.isEmpty();  // false
boolean startsWith = str.startsWith("Hello");  // true
boolean endsWith = str.endsWith("World");      // true

StringBuffer 和 StringBuilder

StringBuffer(线程安全)

java
StringBuffer sb = new StringBuffer();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();  // "Hello World"

// 链式调用
StringBuffer sb2 = new StringBuffer()
    .append("Hello")
    .append(" ")
    .append("World");

StringBuilder(非线程安全,性能更好)

java
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");
String result = sb.toString();  // "Hello World"

// 链式调用
StringBuilder sb2 = new StringBuilder()
    .append("Hello")
    .append(" ")
    .append("World");

性能比较

java
// ❌ 性能差:字符串拼接
String result = "";
for (int i = 0; i < 1000; i++) {
    result += i;  // 每次都创建新对象
}

// ✅ 性能好:使用 StringBuilder
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append(i);
}
String result = sb.toString();

包装类

基本类型与包装类

java
// 装箱:基本类型 → 包装类
Integer i1 = Integer.valueOf(10);
Integer i2 = 10;  // 自动装箱

// 拆箱:包装类 → 基本类型
int value1 = i1.intValue();
int value2 = i1;  // 自动拆箱

常用方法

java
// 字符串转换
String str = "123";
int num = Integer.parseInt(str);      // 字符串转 int
String numStr = String.valueOf(123);  // int 转字符串

// 进制转换
String binary = Integer.toBinaryString(10);  // "1010"
String hex = Integer.toHexString(255);       // "ff"

// 最大值和最小值
int max = Integer.MAX_VALUE;  // 2147483647
int min = Integer.MIN_VALUE;  // -2147483648

Math 类

常用数学方法

java
// 绝对值
int abs = Math.abs(-10);  // 10

// 最大值和最小值
int max = Math.max(5, 10);  // 10
int min = Math.min(5, 10);  // 5

// 幂运算
double pow = Math.pow(2, 3);  // 8.0

// 平方根
double sqrt = Math.sqrt(16);  // 4.0

// 四舍五入
long round = Math.round(3.7);  // 4

// 向上取整和向下取整
double ceil = Math.ceil(3.2);   // 4.0
double floor = Math.floor(3.7); // 3.0

// 随机数
double random = Math.random();  // 0.0 到 1.0 之间的随机数

Random 类

java
Random random = new Random();

// 生成随机整数
int randomInt = random.nextInt();      // 任意整数
int randomIntInRange = random.nextInt(100);  // 0-99

// 生成随机浮点数
double randomDouble = random.nextDouble();  // 0.0-1.0
float randomFloat = random.nextFloat();      // 0.0-1.0

// 生成随机布尔值
boolean randomBoolean = random.nextBoolean();

Date 和 Calendar

Date 类(旧版,不推荐)

java
Date date = new Date();  // 当前时间
Date date2 = new Date(System.currentTimeMillis());  // 指定时间戳

long timestamp = date.getTime();  // 获取时间戳

Calendar 类(旧版,不推荐)

java
Calendar calendar = Calendar.getInstance();
calendar.set(2024, Calendar.JANUARY, 1);  // 设置日期

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);

LocalDate、LocalTime、LocalDateTime(Java 8+)

LocalDate

java
// 创建日期
LocalDate date = LocalDate.now();  // 当前日期
LocalDate date2 = LocalDate.of(2024, 1, 1);  // 指定日期
LocalDate date3 = LocalDate.parse("2024-01-01");  // 解析字符串

// 获取日期信息
int year = date.getYear();
int month = date.getMonthValue();
int day = date.getDayOfMonth();

// 日期操作
LocalDate tomorrow = date.plusDays(1);
LocalDate nextWeek = date.plusWeeks(1);
LocalDate nextMonth = date.plusMonths(1);
LocalDate nextYear = date.plusYears(1);

LocalTime

java
// 创建时间
LocalTime time = LocalTime.now();  // 当前时间
LocalTime time2 = LocalTime.of(12, 30, 45);  // 指定时间
LocalTime time3 = LocalTime.parse("12:30:45");  // 解析字符串

// 获取时间信息
int hour = time.getHour();
int minute = time.getMinute();
int second = time.getSecond();

// 时间操作
LocalTime nextHour = time.plusHours(1);
LocalTime nextMinute = time.plusMinutes(5);

LocalDateTime

java
// 创建日期时间
LocalDateTime dateTime = LocalDateTime.now();  // 当前日期时间
LocalDateTime dateTime2 = LocalDateTime.of(2024, 1, 1, 12, 30);
LocalDateTime dateTime3 = LocalDateTime.parse("2024-01-01T12:30:45");

// 组合日期和时间
LocalDate date = LocalDate.of(2024, 1, 1);
LocalTime time = LocalTime.of(12, 30);
LocalDateTime dateTime = LocalDateTime.of(date, time);

DateTimeFormatter

java
// 格式化日期时间
LocalDateTime dateTime = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formatted = dateTime.format(formatter);

// 解析日期时间字符串
String dateStr = "2024-01-01 12:30:45";
LocalDateTime parsed = LocalDateTime.parse(dateStr, formatter);

Arrays 类

java
int[] arr = {3, 1, 4, 1, 5};

// 排序
Arrays.sort(arr);  // {1, 1, 3, 4, 5}

// 查找(必须已排序)
int index = Arrays.binarySearch(arr, 3);  // 2

// 填充
Arrays.fill(arr, 0);  // {0, 0, 0, 0, 0}

// 复制
int[] copy = Arrays.copyOf(arr, arr.length);

// 比较
boolean equals = Arrays.equals(arr1, arr2);

// 转字符串
String str = Arrays.toString(arr);  // "[1, 1, 3, 4, 5]"

Collections 工具类

java
List<Integer> list = new ArrayList<>();

// 排序
Collections.sort(list);

// 反转
Collections.reverse(list);

// 打乱
Collections.shuffle(list);

// 查找
int index = Collections.binarySearch(list, 5);

// 最大值和最小值
int max = Collections.max(list);
int min = Collections.min(list);

// 填充
Collections.fill(list, 0);

// 复制
Collections.copy(list2, list1);

// 频率
int frequency = Collections.frequency(list, 5);

System 类

java
// 获取当前时间戳
long currentTime = System.currentTimeMillis();

// 数组复制
int[] src = {1, 2, 3};
int[] dest = new int[3];
System.arraycopy(src, 0, dest, 0, src.length);

// 获取系统属性
String os = System.getProperty("os.name");
String javaVersion = System.getProperty("java.version");

// 退出程序
System.exit(0);  // 正常退出

// 垃圾回收
System.gc();  // 建议 JVM 执行垃圾回收

完整示例

java
public class CommonClassesExample {
    public static void main(String[] args) {
        // String 示例
        String str = "Hello World";
        System.out.println("长度: " + str.length());
        System.out.println("转大写: " + str.toUpperCase());
        System.out.println("分割: " + Arrays.toString(str.split(" ")));
        
        // StringBuilder 示例
        StringBuilder sb = new StringBuilder();
        sb.append("Hello").append(" ").append("World");
        System.out.println("StringBuilder: " + sb.toString());
        
        // Math 示例
        System.out.println("绝对值: " + Math.abs(-10));
        System.out.println("最大值: " + Math.max(5, 10));
        System.out.println("随机数: " + Math.random());
        
        // Random 示例
        Random random = new Random();
        System.out.println("随机整数: " + random.nextInt(100));
        
        // LocalDate 示例
        LocalDate date = LocalDate.now();
        System.out.println("当前日期: " + date);
        System.out.println("明天: " + date.plusDays(1));
        
        // Arrays 示例
        int[] arr = {3, 1, 4, 1, 5};
        Arrays.sort(arr);
        System.out.println("排序后: " + Arrays.toString(arr));
    }
}

下一步

掌握了常用类后,可以继续学习:


💡 提示:Java 提供了丰富的类库,熟练掌握常用类的使用可以大大提高开发效率