三、JAVA常用类库之StringBuilder类
1Stringbuffer的兄弟StringBuilder:
面试题:StringBuffer与StringBuilder的区别?
①StringBuffer是线程安全的,性能低,适合在多线程中使用 JDK 1.0
②StringBuilder是线程不安全的,性能高,适合在单线程中使用,这种情况占多大数,在JDK 1.5以后添加
2.JDK1.5以后字符串相加原理:
字符串相加操作:
1.多个常量相加,没有性能问题,在编译期优化,
2.变量与常量相加会产生多个垃圾对象
JDK1.5以后:
字符串相加,在编译后,会使用StringBuilder来优化代码,实现拼接。
3.部分代码实现:
public class StringBuilderDemo {
public static void main(String[] args) {
//面试题:StringBuffer与StringBuilder的区别?
//StringBuffer是线程安全的,性能低,适合在多线程中使用 JDK 1.0
//StringBuilder是线程不安全的,性能高,适合在单线程中使用,这种情况占多大数,在JDK 1.5以后添加
//StringBuilder sb = new StringBuilder();
//字符串相加操作
//1.多个常量相加,没有性能问题,在编译期优化,
//2.变量与常量相加会产生多个垃圾对象
//String a = "a" + 1;
//String b = a + "1";
String c = null;
for (int i = 0; i < 5; i++) {
//每次循环会产生一个StringBuilder对象实现拼接,性能低,最好手动创建StringBuilder来拼接
c = c + 1;
}
//字符串相加,在编译后,会使用StringBuilder来优化代码,实现拼接。
}
}
4.javap -c 类名:
查看编译后产生几个对象:
每循环一次 产生一个StringBuilder对象,这种情况建议手动new一个StringBuilder对象,提高性能