使用 StringBuilder 而不是 StringBuffer 有啥特别之处 [重复]
Posted
技术标签:
【中文标题】使用 StringBuilder 而不是 StringBuffer 有啥特别之处 [重复]【英文标题】:Wha's special in using StringBuilder insted of StringBuffer [duplicate]使用 StringBuilder 而不是 StringBuffer 有什么特别之处 [重复] 【发布时间】:2012-03-18 16:43:55 【问题描述】:可能重复:StringBuilder and StringBuffer in Java
我想知道StringBuilder和StringBuffer的区别。在 StringBuffer 中它会自动分配 16 个字符。当我们添加一个字符串“hello”时,它的容量增加到 21。谁能澄清我的疑问?
【问题讨论】:
-1 表示没有先阅读 Javadoc。 【参考方案1】:您看过 Javadocs 吗?
来自http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html:
该类提供与 StringBuffer 兼容的 API,但不保证同步。此类设计用于在单个线程正在使用字符串缓冲区的地方(通常情况下)用作 StringBuffer 的替代品。在可能的情况下,建议优先使用此类而不是 StringBuffer,因为它在大多数实现下会更快。
【讨论】:
Here 的 JDK 7 javadoc:“StringBuilder 的实例对于多线程使用是不安全的。如果需要这种同步,那么建议使用 StringBuffer”【参考方案2】:主要区别在于,StringBuffer 是线程安全的(它的所有方法都是同步的),但StringBuilder 不是。但是 StringBuilder 比 StringBuffer 快。如果您不需要线程安全,请使用 StringBuilder。
【讨论】:
【参考方案3】:StringBuffer 是线程安全的(即,它的方法是同步的)。但是,并非每个应用程序都需要这样做,并且它会使代码比其他情况下要慢。 StringBuilder 本质上是没有同步的 StringBuffer,因此速度更快。
【讨论】:
以上是关于使用 StringBuilder 而不是 StringBuffer 有啥特别之处 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
字符串拼接时使用StringBuilder而不是String
字符串拼接时使用StringBuilder而不是String
当我使用 StringBuilder.Append 而不是 .AppendLine 时,是不是需要添加额外的 .Append(crlf)s?
android StringBuffer 和StringBuilder