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));

运行结果:
image-20220220135309324

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

posted @ 2022-02-21 21:34  weiambt  阅读(218)  评论(0)    收藏  举报