String和StringBuffer之间的区别

String类是不可改变的,一旦了创建了String对象,它的值就无法改变。
如果需要对字符串做很多修改,那么应该选择使用 StringBuffer & StringBuilder 类
因为String是被final修饰的,长度是不可变的,就算调用 String 的 concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象,而 StringBuffer 的长度是可变的,调用StringBuffer 的 append 方法,来改变 StringBuffer 的长度,并且,相比较于 StringBuffer,String 一旦发生长度变化,是非常耗费内存的!
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

StringBuffer方法

  1. public StringBuffer append(String s)
    将指定的字符追加到此字符序列
  2. public StringBuffer reverse()
    将此字符序列用其反转形式取代。
  3. public delete(int start, int end)
    移除此序列的子字符串中的字符。
  4. public insert(int offset, int i)
    将 int 参数的字符串表示形式插入此序列中。
  5. replace(int start, int end, String str)
    使用给定 String 中的字符替换此序列的子字符串中的字符。

总结

String 长度大小不可变
StringBuffer 和 StringBuilder 长度可变
StringBuffer 线程安全 StringBuilder 线程不安全
StringBuilder 速度快

StringBuilder

StringBuilder 类是可变的。它是 String 的对等类,它可以增加和编写字符的可变序列,并且能够将字符插入到字符串中间或附加到字符串末尾(当然是不用创建其他对象的)
StringBuilder类构造方法
JAVA学习——4.StringBuffer和StringBuilder
StringBuilder类的常用方法
JAVA学习——4.StringBuffer和StringBuilder

相关文章: