<mss_erpbridge>
和(String
或StringBuilder
)之间存在许多差异,例如可变性和许多字符串操作
可能这个问题看起来有点傻,但我想知道编程范式。
我想问一下,为什么Java为StringBuffer
这样的数据结构实现了另一个类StringBuilder
或StringBuffer
。为什么他们没有在String
本身中提供这些功能。
为什么不让String
本身具有线程安全性或提供String
或StringBuilder
具有的一些额外功能?
答案 0 :(得分:7)
字符串是不可变的,有很多原因也有益处。为什么?它的必要性是什么? (非常热门的话题)搜索或阅读那些 why-is-string-immutable-in-java或why-string-is-immutable-in-java
现在有人需要经常进行字符串操作 StringBuffer 这是线程安全的(同步)。
现在有些人仍然可以在不需要线程安全时使用 StringBuffer ,但这样会很慢。这就是为什么它们都很重要的原因。
字符串由jvm
处理不同如果添加了StringBuffer
的这些功能,则它将不再是不可变的。
更新:第2点和第3点与@Jon Skeet的评论有所不同。