面试题-JVM-004. String,StringBuilder,StringBuffer区别

String、StringBuffer、StringBuilder的区别:

1.比较

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

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
面试题-JVM-004. String,StringBuilder,StringBuffer区别_第1张图片

2.2 StringBuffer

synchronized

2.3 StringBuilder

无同步

你可能感兴趣的:(面试问题jvm)