Stringbuffer,Stringbuilder when to use?
Possible Duplicate:
StringBuilder and StringBuffer in Java
在StringBuffer和StringBuilder中选择的标准
如果您肯定使用Java 5或更高,并且您绝对不需要在线程之间共享对象(我不记得曾经需要这样做),EDCOX1 OR 0是更好的选择。
基本上,为了避免无意义的同步,您应该尽可能始终使用StringBuilder。诚然,大多数虚拟机处理无争议同步的方式是非常有效的,但是如果您一开始不需要它…
- +1 imho,如果您认为需要在线程之间共享一个StringBuffer,则会出现严重的设计问题。
- 你不认为使用StringBuilder不一定会使用堆空间吗?
- @猎人:和做什么相比?为什么期望StringBuilder使用比StringBuffer更多的堆空间?
- @当您不需要在线程之间共享对象时(即当您的字符串不被多个线程访问时),您不认为使用字符串比使用StringBuilder更好吗?因为StringBuilder将其对象直接存储到堆空间中。
- @jonsket只是为了添加…string会将其对象存储到字符串池中,从而节省整个堆空间。但StringBuilder将不必要地使用堆空间。
- @亨特:我认为你没有抓住问题的关键所在——它主要是比较StringBuffer和StringBuilder,而不是字符串和StringBuilder。并非所有字符串都在字符串池中,我怀疑您误解了字符串池的工作方式。我只会用StringBuilder来构建一个字符串…
- @亨特:注意,最初的问题——当我回答它的时候——甚至没有混合使用String。另一位用户决定添加(与IMO的编辑指南相反)。我已经有效地恢复了编辑,回到了操作要求的内容,但是格式更好…
StringBuilder方法不同步,因此当您不关心多线程部分时,可以使用它,因为它很快。
另一方面,StringBuffer的所有方法都是同步的,因此是线程安全的。
您可以浏览以下文章:—StringBuilder和StringBuffer之间的区别