java - 为什么java有StringBuilder或者StringBuffer?

标签 java string stringbuilder stringbuffer

<分区>

String 和(StringBuilderStringBuffer)之间有很多区别,比如可变性和许多字符串操作

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

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

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

最佳答案

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

  2. 现在有些人需要做频繁的字符串操作,StringBuffer 是线程安全的(同步的)。

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

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

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


更新:第 2 点和第 3 点根据@Jon Skeet 的评论进行了更改。

关于java - 为什么java有StringBuilder或者StringBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30636034/

相关文章:

c# - 在不抛出异常的情况下测试字符串是否为 guid?

powershell - 如何将颜色线插入 StringBuilder 对象

java - Android Studio - Gradle 构建运行永无止境

java - 尝试解析二进制数据......在我的例子中它是 moSTLy pdf

java - 如何在android listview中显示数据库信息?出现错误 NULL 指针异常

python - 在 html 元素上使用 text_content() 时避免连续出现单词的可靠方法

java - Hibernate中的@Formula计算日期时间

java - 使用默认语言以外的其他语言时,不要连接 setText 显示的文本问题 + 应用程序崩溃

c# - StringBuilder 是否只在循环场景中更受欢迎?

javascript - ReferenceError StringBuilder 未在 JavaScript 中定义