为什么java有StringBuilder或StringBuffer?

Ama*_*ngh 2 java string stringbuilder stringbuffer

String和(StringBuilderStringBuffer)之间存在许多差异,例如可变性和许多字符串操作

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

我想问一下,为什么Java实现了另一个类,StringBuilder或者StringBuffer像数据结构那样String.为什么他们自己没有给出这些功能String.

为什么不把String本身线程安全的,或提供一些额外的功能StringBuilderStringBuffer有?

Sai*_*aif 7

  1. 字符串是不可变的,有很多原因,也有益处.为什么?它的必要性是什么?(非常热门的话题)搜索或读取那些 为什么是字符串不可变的java为什么字符串是不可变的在java中

  2. 现在有些人需要经常进行String操作,这是StringBuffer ,它是线程安全的(同步的).

  3. StringBuilder中有些人不需要线程安全.

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

字符串的处理方式不同jvm如果StringBuffer添加了这些特性,它将不再是不可变的.


更新:第2点和第3点从@Jon Skeet的评论中改变.

  • 实际上`StringBuffer`来自`StringBuilder`,然后Sun意识到需要它的线程安全非常罕见,所以他们引入了`StringBuilder`.如果`StringBuilder`先来了,我怀疑`StringBuffer`会不会被引入. (7认同)

归档时间:

查看次数:

143 次

最近记录:

10 年,4 月 前