StringBuilder和StringBuffer的区别

1734

StringBufferStringBuilder的主要区别是什么?在决定使用其中任何一个时是否存在性能问题?

33个回答

0

其他人已经正确指出了两者之间的关键差异。但是就性能而言,我想补充一点,即JVM级别的优化“锁消除”可以使同步上下文中的性能差异几乎不存在。关于这方面的优秀阅读材料可以在这里这里找到。


0

StringBuffer 中的每个方法都是同步的,因此一次只允许一个线程操作 StringBuffer 对象。这会增加线程的等待时间并创建性能问题,为了解决这个问题,SUN 在 1.5 版本中引入了 StringBuilder。


0

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

StringBuffer更慢的另一个原因是每次添加或删除时都会更新变量缓冲区。我进行了测试,不知何故,如果我删除超过一万次,StringBuffer的remove方法会更快。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接