Java解释: why String immutable make StringBuffer MORE efficient

标签 java string immutability stringbuffer

我在一本 Java 书中读到:

Because a String is immutable, using StringBuffer is more efficient.

我知道 String 实例是不可变的。

我还了解到 StringBuffer 使处理字符串比正常情况更有效。

但是我无法弄清楚是什么连接了这两个概念,即 String 不可变如何帮助 StringBuffer

谢谢:)

最佳答案

因为字符串是不可变的,所以要操作字符串,例如连接字符串,您必须创建新的 String 对象,因为显然,您无法更改现有 String 对象的状态。而使用 StringBuffer 或 StringBuilder,您可以创建一个对象并简单地更改其状态。例如,如果您在 for 循环中进行一些主要的字符串连接,则此对象创建可能会变得非常昂贵。

话虽这么说,我在这里看到许多帖子批评不涉及大规模连接的简单字符串连接,在这种情况下使用 StringBuffer 或 StringBuilder 是过早且不必要的优化的一个例子。

另请注意,您应该优先使用 StringBuilder 而不是 StringBuffer,除非您的应用程序需要在多个线程中访问该对象并且不介意由此产生的额外开销。

关于Java解释: why String immutable make StringBuffer MORE efficient,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9900717/

相关文章:

rust - 不能作为不可变借用 - String 和 len()

java - 如何在计划java应用程序中使用StandardEnvironment,而不是在spring中

java - Android 音乐播放器不播放选定的歌曲

java - Spring Integration 在事务中向 Executor 发送消息

string - 关于特定方案/ Racket 的快速语法问题。显示不带引号的字符串?

javascript - 在 Immutable.js 中解析嵌套记录

java - 轮询服务器以在 Java 客户端中获取数据的替代方案?

c - 在字符串中的子字符串之后查找多个字符

python - 如何修剪空白?

javascript - JavaScript 中 Object.freeze() 和 Object.seal() 的用例是什么?