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