这里用一组图表来说明Java字符串的不可变性。
1. 声明一个字符串
以下代码初始化字符串s
String s = "abcd"; |
变量s存储字符串对象的引用,如下所示。箭头可以解释为“存储的引用”。

2. 将一个字符串变量分配给另一个字符串变量
以下代码将s分配给s2。
String s2 = s; |
s2存储相同的引用值,因为它是相同的字符串对象。

3. 连接字符串
当我们将字符串“ef”连接到s时
s = s.concat("ef"); |
s存储新创建的string对象的引用,如下所示。

总结
总之,一旦在内存(堆)中创建了字符串,就不能更改它。字符串的所有方法都不改变字符串本身,而是返回一个新的字符串。
如果我们需要一个可以修改的字符串,我们需要StringBuffer或StringBuilder。否则,垃圾收集会浪费很多时间,因为每次创建一个新的String。
至此,为什么Java String一旦声明就不可变,以及我们该如何该正确使用它!已经讲完了! 希望对你有所帮助!
长按订阅更多精彩▼
