String、StringBuffer、StringBuilder的区别:

1.比较

口径StringStringBufferStringBuilder
执行速度最差其次最高
线程安全安全安全不安全
使用场景少量字符串操作并发+大量单线程+大量操作

2.源码

2.1 String

final
字符串是常量;它们的值创建后不能更改。字符串缓冲区支持可变字符串。因为String对象是不可变的,所以它们可以被共享.

Java语言为字符串连接操作符(+)以及将其他对象转换为字符串提供了特殊支持。字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现的。
java8中如下代码是用的StringBuilder:
public class Test {

  public static void main(String[] args){
      String a = "a";
      String b = "b";
      String c = a+b;
      System.out.println(c);
  }
    
}

javap -v Test.class
15b02f064fb4f6a7bc2755beee4f763.png

2.2 StringBuffer

synchronized

2.3 StringBuilder

无同步


丰木
325 声望21 粉丝

遇见超乎想象的自己!