String与String Builder的区别
区别
- String是final修饰的、长度不可变的字符串,每次改变都会重新new一个新的对象(内存开销比较大)
- String Builder是变长的字符串,每次都是在原对象上进行操作
应用场景
如果要经常改变字符串内容优先使用String Builder,多线程共享变量时使用String Buffer
测试
//String每次改变都会重新new一个对象
String s="a";
System.out.println(System.identityHashCode(s));
s="d";
System.out.println(System.identityHashCode(s));
System.out.println("====================");
//而StringBuilder是在修改原对象
StringBuilder sb=new StringBuilder("a");
System.out.println(System.identityHashCode(sb));
sb.append("a");
System.out.println(sb);
System.out.println(System.identityHashCode(sb));
运行结果:

System.identityHashCode(s):返回原始hashcode值(即内存地址)

浙公网安备 33010602011771号