【问题标题】:StringBuffer vs StringBuilder Vs StringTokenizerStringBuffer vs StringBuilder vs StringTokenizer
【发布时间】:2011-04-16 16:45:04
【问题描述】:

StringBuffer vs StringBuilder Vs StringTokenizer 在内部实现上有什么区别。什么时候使用这些。敬请期待答案。

更新:-

我也在浏览源代码。

【问题讨论】:

标签: java


【解决方案1】:

StringBuffer - 是 StringBuilder 的同步版本(在其非同步对等体之后引入)

【讨论】:

  • 说“StringBuilder是StringBuffer的非同步版本”不是更简单明了吗?
  • 我在 1.5 之前的 java 中工作了很多,没有 StringBuilder,所以我的参考点是 StringBuffer :-)
  • @Peter Török:不。它的方式非常简单明了,而且还提供了一个历史视角,而你没有。
【解决方案2】:
  • StringBuffer 被设计为线程安全的,并且 StringBuffer 中的所有公共方法都是同步的。 StringBuilder 不处理线程安全问题,并且它的所有方法都没有同步。

  • 在大多数情况下,StringBuilder 的性能优于 StringBuffer。

  • 尽可能使用新的 StringBuilder。

Hereperformance comparisonStringBuilder & StringBuffer

StringBuilder 和 StringBuffer 保存 String,其中 StringoTokeizer 类允许应用程序将字符串分解为标记 .. 所以它就像一个奇怪的输出

【讨论】:

    【解决方案3】:

    StringBuffer - 在 JDK 1.0 中引入 - 是线程安全的(它的所有方法都是 synchronized),而 StringBuilder - 因为 JDK 1.5 - 不是。所以一般情况下建议使用后者。

    StringTokenizer 的目的与前两个完全不同:将琴弦切成碎片,而不是组装。正如@Henning 所指出的,它自 JDK 1.5 起也“退休”了——建议改用 String.split

    【讨论】:

    • StringTokenizer 虽然没有被弃用,但也是“出于兼容性原因保留的旧类,尽管在新代码中不鼓励使用它”。 download.oracle.com/javase/6/docs/api/java/util/…
    • @Henning,感谢您的注意-我更新了答案以包含此内容。
    【解决方案4】:

    StringBuffer 的用途与 StringBuilder 相同,只是 StringBuffer 是线程安全的。
    StringTokenizer 用于根据某些分隔符将字符串拆分为标记。

    【讨论】:

      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2011-05-29
      • 1970-01-01
      • 2017-05-27
      • 2014-07-10
      • 2011-02-27
      相关资源
      最近更新 更多