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


当前回答

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

良好使用示例:

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

其他回答

StringBuilder比StringBuffer更快,因为StringBuffer是同步的,StringBuffer有自己的char[]缓冲区用于缓存,就像BufferedInputStream一样。

StringBuffer速度较慢的另一个原因是,每次添加或删除时,它都会更新变量缓冲区。我测试了它,如果我移除超过一万次,StringBuffer的移除方法会更快。

很好的问题

以下是我注意到的差异:

字符串缓冲区:-

StringBuffer is  synchronized
StringBuffer is  thread-safe
StringBuffer is  slow (try to write a sample program and execute it, it will take more time than StringBuilder)

StringBuilder:-

 StringBuilder is not synchronized 
 StringBuilder is not thread-safe
 StringBuilder performance is better than StringBuffer.

常见问题:-

两者都有相同的方法和相同的签名。两者都是可变的。

字符串是不可变的。

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

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

StringBuffer中的每个方法都是同步的。因此,一次只允许一个线程操作StringBuffer对象。它增加了线程的等待时间并造成性能问题为了解决这个问题,SUN People推出了1.5版本的StringBuilder。

StringBuffer已同步,StringBuilder未同步。