Java解释:为什么String immutable使StringBuffer更高效

hqt*_*hqt 2 java string stringbuffer immutability

我在Java书中读过:

因为a String是不可变的,使用StringBuffer效率更高.

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

我也明白,StringBuffer使处理字符串比正常情况更有效.

但是我无法解决的问题是连接这两个概念的原因,即String不可变的帮助是StringBuffer什么?

谢谢 :)

Hov*_*els 8

因为字符串是不可变的,要操纵字符串,比如连接字符串,就必须创建新的String对象,因为很明显,你不能改变现有String对象的状态.而使用StringBuffer或StringBuilder,您可以创建一个对象,只需更改其状态即可.例如,如果你在for循环中进行一些主要的字符串连接,那么这个对象的创建会变得非常昂贵.

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

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