我在一本 Java 书中读到:
Because a
String
is immutable, usingStringBuffer
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/