StringBuffer和StringBuilder之间的主要区别是什么?在决定其中任何一项时是否存在性能问题?


当前回答

StringBuilder不是线程安全的。字符串缓冲区是。更多信息请点击此处。

编辑:至于性能,在热点启动后,StringBuilder是赢家。然而,对于较小的迭代,性能差异可以忽略不计。

其他回答

字符串是不可变的。

StringBuffer是一个可变的和同步的。

StringBuilder也是可变的,但不同步。

StringBuffer用于存储将要更改的字符串(字符串对象不能更改)。它会根据需要自动展开。相关类:String、CharSequence。

StringBuilder是在Java5中添加的。它在所有方面都与StringBuffer相同,只是它不同步,这意味着如果多个线程同时访问它,可能会出现问题。对于单线程程序,最常见的情况是,避免同步开销会使StringBuilder稍微快一些。

StringBuilder不是线程安全的。字符串缓冲区是。更多信息请点击此处。

编辑:至于性能,在热点启动后,StringBuilder是赢家。然而,对于较小的迭代,性能差异可以忽略不计。

String是一个不可变的对象,这意味着值不能更改,而StringBuffer是可变的。

StringBuffer是同步的,因此是线程安全的,而StringBuilder不是,并且只适用于单线程实例。

StringBuilder和StringBuffer几乎相同。不同之处在于StringBuffer是同步的,而StringBuilder不是。尽管StringBuilder比StringBuffer更快,但性能差异很小。StringBuilder是SUN对StringBuffer的替代品。它只是避免了所有公共方法的同步。相反,它们的功能是相同的。

良好使用示例:

如果您的文本将要更改并被多个线程使用,那么最好使用StringBuffer。如果您的文本将要更改,但被单个线程使用,请使用StringBuilder。