java程序设计开发,Java高级API-实用类String、StringBuffer、StringBuilder学习笔记
Java 高级 API - String、StringBuffer、StringBuilder 学习笔记
一、String 类:不可变字符序列
核心特性:
- 不可变性:String 对象一旦创建,内容和长度不可改变(修改会生成新对象)。
- 底层实现:JDK 9 + 使用
byte[]
存储字符(紧凑排列,节省内存),JDK 8 及之前使用char[]
。 - 线程安全:天然线程安全(不可变特性保证)。
案例 1:字符串拼接的性能对比
// 反例:循环中使用String拼接(性能差)
long start = System.currentTimeMillis();
String result = "";
for (int i = 0; i < 10000; i++) {
result += i; // 每次拼接生成新String对象
}
System.out.println("String拼接耗时:" + (System.currentTimeMillis() - start) + "ms"); // 耗时约100ms+
// 正例:使用StringBuilder拼接(性能优)
start = System.currentTimeMillis();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
sb.append(i); // 直接操作底层数组,无需创建新对象
}
result = sb.toString();
System.out.println("StringBuilder拼接耗时:" + (System.currentTimeMillis() - start) + "ms"); // 耗时约1ms
解析:
- String 拼接本质是创建新对象,循环中使用会导致大量临时对象和 GC 开销。
- StringBuilder内部维护可变数组,
append
操作直接修改数组,性能提升显著(约 100 倍)。