一、String

  1. 字符串常量,字符串长度不可更改,也就是说String对象一旦创建就不可更改。
  2. Java中对String对象的操作实际上就是不断创建并回收对象的过程,因此在运行速度上相对StringBuilder和StringBuffer来说较慢。
  3. 不要使用String类的”+”来进行频繁的拼接,因为这样性能极差,应该使用StringBuffer或StringBuilder类,这在Java的优化上是一条比较重要的原则。

二、StringBuilder

  1. 因为没有关键字修饰,所以StringBuilder是非线程安全的。
  2. StringBuilder是一个可变的字符序列,是JDK5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候。
  3. 在大部分情况下,StringBuilder > StringBuffer。这主要是由于前者不需要考虑线程安全。

三、StringBuffer

  1. StringBuffer中大部分方法由synchronized关键字修饰,在必要时可对方法进行同步,因此任意特定实例上的所有操作就好像是以串行顺序发生的,该顺序与所涉及的每个线程进行的方法调用顺序一致,所以是线程安全的。
  2. 如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。
  3. 使用 StringBuffer 类时,每次都会对 StringBuffer 对象本身进行操作,而不是生成新的对象并改变对象引用。所以多数情况下推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。

四、三者使用

  1. 如果要操作少量的数据,用String ;单线程操作大量数据,用StringBuilder ;多线程操作大量数据,用StringBuffer。
  2. StringBuilder一般使用在方法内部来完成类似”+”功能,因为是线程不安全的,所以用完以后可以丢弃。StringBuffer主要用在全局变量中。

版权声明:本文为weixin_44233280原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44233280/article/details/100651164