Appearance
📚 常用类与字符串处理
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"); // trueStringBuffer 和 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; // -2147483648Math 类
常用数学方法
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 提供了丰富的类库,熟练掌握常用类的使用可以大大提高开发效率
