为什么java有StringBuilder或StringBuffer?

时间:2015-06-04 05:59:22

标签: java string stringbuilder stringbuffer

<mss_erpbridge>和(StringStringBuilder)之间存在许多差异,例如可变性和许多字符串操作

可能这个问题看起来有点傻,但我想知道编程范式。

我想问一下,为什么Java为StringBuffer这样的数据结构实现了另一个类StringBuilderStringBuffer。为什么他们没有在String本身中提供这些功能。

为什么不让String本身具有线程安全性或提供StringStringBuilder具有的一些额外功能?

1 个答案:

答案 0 :(得分:7)

  1. 字符串是不可变的,有很多原因也有益处。为什么?它的必要性是什么? (非常热门的话题)搜索或阅读那些 why-is-string-immutable-in-javawhy-string-is-immutable-in-java

  2. 现在有人需要经常进行字符串操作 StringBuffer 这是线程安全的(同步)。

  3. 有人不需要线程安全 StringBuilder
  4. 现在有些人仍然可以在不需要线程安全时使用 StringBuffer ,但这样会很慢。这就是为什么它们都很重要的原因。

    字符串由jvm处理不同如果添加了StringBuffer的这些功能,则它将不再是不可变的。

    更新:第2点和第3点与@Jon Skeet的评论有所不同。