【问题标题】: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。

标签: java stringbuilder stringbuffer


【解决方案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,因此速度更快。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 2012-07-01
      • 1970-01-01
      • 2018-02-27
      • 2012-10-09
      • 2023-04-04
      • 2016-12-17
      • 2015-12-13
      • 2014-08-26
      相关资源
      最近更新 更多