关于java:使用StringBuilder而不是StringBuffer有什么特别之处

Wha's special in using StringBuilder insted of StringBuffer

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
StringBuilder and StringBuffer in Java

我想知道StringBuilder和StringBuffer之间的区别。在StringBuffer中,它自动分配16个字符。当我们添加一个字符串"hello"时,它的容量将增加到21。有人能澄清我的疑问吗?


你看过javadocs吗?

从http://docs.oracle.com/javase/7/docs/api/java/lang/stringbuilder.html:

This class provides an API compatible with StringBuffer, but with no guarantee of synchronization. This class is designed for use as a drop-in replacement for StringBuffer in places where the string buffer was being used by a single thread (as is generally the case). Where possible, it is recommended that this class be used in preference to StringBuffer as it will be faster under most implementations.


主要的区别是,StringBuffer是线程安全的(它的所有方法都是同步的),但StringBuilder不是。但StringBuilder比StringBuffer更快。如果不需要线程安全,请使用StringBuilder。


StringBuffer是线程安全的(即,它的方法是同步的)。但是,这并不是每个应用程序都需要的,它使得代码比其他应用程序慢。StringBuilder本质上是没有同步的StringBuffer,因此速度更快。