String类、StringBuffer类以及StringBuilder类

1、String类与StringBuilder类

(1)、String类的底层是byte数组,但是却 final 修饰;故而String类型是常量,不可变
    StringBuilder类的底层也是byte数组,但是却 没被final 修饰,所以StringBuilder类型是变量,可改变
(2)、String类没有缓冲区概念,所以字符串的操作效率较低
    StringBuilder类拥有缓冲区,缓冲区长度默认为16,当要超出16时会自动进行扩容;所以字符串操作效率更高

2、String类、StringBuffer类与StringBuilder类

(1)、运行速度的比较:String < StringBuffer < StringBuilder
(2)、线程安全的比较:String与StringBuffer都是 线程安全 ,而StringBuilder 线程不安全
注意: 所有不可变类 都是线程安全 的,但是线程安全的类 不一定 就是不可变类。如下:
   String是不可变类,所以线程安全;而Stringbuffer是靠锁才得以线程安全

3、适用场景

  • String类:适用于 少量 的字符串操作的场景
  • StringBuffer类:适用于 单线程 下在字符串缓冲区进行大量操作的场景
  • StringBuilder类:适用于 多线程 下在字符串缓冲区进行大量操作的场景

猜你喜欢

转载自blog.csdn.net/qq_41970025/article/details/88841252