Java中的String、StringBuilder、StringBuffer的区别

String 字符串常量 线程安全
因为是常量,所以是线程安全的,当我们修改 String 的时候,其实是创建了一个新的 String 对象,当需要频繁修改字符串的时候,不建议使用 String 因为当 JAVA 虚拟机堆中创建多了无引用的 String 对象之后,JAVA 垃圾回收器(GC)就会开始运行,程序也会因此变慢。

StringBuilder 字符串变量 非线程安全
StringBuffer 字符串变量 线程安全
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。原因是StringBuffer中很多方法可以带有synchronized关键字,所以可以保证线程安全,但 StringBuilder 没有。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下(单线程)建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

猜你喜欢

转载自blog.csdn.net/machinerandy/article/details/80295947