什么是字符串不可变性?
1. 声明字符串
初始化一个字符串 str
String str = "Hello";
变量str
存储字符串对象的引用
2. 将字符串变量分配给另一个字符串变量
将str
分配给str2
String str2 = str;
因为他是相同的字符串对象,所以str2
存储相同的引用值
3. 连接字符串
使用字符串的concat()
方法将" World"
连接到str
str = str.concat(" World")
str
存储新创建的字符串对象的引用,如下所示
总之,一旦在堆
中创建了字符串,就无法更改它。字符串方法不会更改字符串本身,而是返回新的 String
。
如果我们需要一个可以修改的字符串,我们将需要StringBuffer
或StringBuilder
。否则,垃圾回收
将浪费大量时间,因为每次都会创建新字符串。