画图说明Java String的不变性!可修改字符串不要轻易使用String!

这里用一组图表来说明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一旦声明就不可变,以及我们该如何该正确使用它!已经讲完了! 希望对你有所帮助!


长按订阅更多精彩▼