String+StringBuilder+StringBuffer

来源:互联网 发布:反演变换知乎 编辑:程序博客网 时间:2024/06/08 18:22

String 是被 final 修饰的,他的长度是不可变的,一旦创建了 String 对象,那它的值就无法改变了,就算调用 String 的concat 方法,那也是把字符串拼接起来并重新创建一个对象,把拼接后的 String 的值赋给新创建的对象。String 一旦发生长度变化,是非常耗费内存的!


如果需要对字符串做很多修改,那么应该选择使用 StringBuffer 和 StringBuilder 类。


和 String 类不同的是,StringBuilder和StringBuffer 类的对象能够被多次的修改,长度是可变的,调用append 方法,来改变长度,不产生新的未使用对象。

StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。

由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。


简而言之即:

String 长度大小不可变

StringBuffer 和 StringBuilder 长度可变

StringBuffer 线程安全 StringBuilder 线程不安全

StringBuilder 速度快


原创粉丝点击