一、String(不可变类)

String类是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列是不可改变的,直至这个对象被销毁。
每次创建一个String类都会生成一个新的对象,这样极大的浪费了内存空间并且效率低下。

二、StringBuffer & StringBuilder(可变类)

StringBuffer和StringBuilder对象则代表一个字符序列可变的字符串,所以和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。这是StringBuffer和StringBuilder对象的共同点。

但是StringBuffer 和 StringBuilder也有一些区别。
StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以StringBuilder性能略高于StringBuffer。

StringBuffer是如何实现线程安全的?
浅谈String & StringBuffer & StringBuilder的区别
查看源码可知是SringBuffer类中的方法都添加了synchronized关键字,也就添加了一个锁机制,用来保证线程安全。
而StringBuilder并没有使用加锁机制所以不是线程安全的。
所以在多线程情况下因为要考虑线程安全所以一般使用StringBuffer,在单线程因为不考虑线程安全的情况所以就用StringBuilder,因为StringBuilder的性能略高于StringBuffer。

相关文章:

  • 2021-09-15
  • 2021-08-20
  • 2021-05-09
  • 2022-12-23
猜你喜欢
  • 2021-04-02
  • 2021-04-11
  • 2021-06-03
  • 2021-05-22
  • 2021-07-03
  • 2021-06-17
相关资源
相似解决方案