图以显示Java字符串的不可变性

这里有一组图来说明Java字符串的不可变性。

1. 声明一个字符串

下面的代码初始化一个字符串s。

图以显示Java字符串的不可变性

变量s存储字符串对象的引用,如下所示。

箭头可以解释为“store reference of”。

图以显示Java字符串的不可变性

2.将一个字符串变量分配给另一个字符串变量

下面的代码将s分配给s2。

图以显示Java字符串的不可变性

s2存储相同的引用值,因为它是相同的字符串对象。

图以显示Java字符串的不可变性

3.Concat字符串

当我们将字符串ef连接到s时,

图以显示Java字符串的不可变性

s存储新创建的字符串对象的引用,如下所示。

图以显示Java字符串的不可变性

摘要

总之,一旦在内存(堆)中创建了字符串,就不能更改它。

String的所有方法都不会更改字符串本身,而是返回一个新字符串。

如果我们需要一个可以修改的字符串,我们将需要StringBuffer或StringBuilder。

否则,由于每次创建一个新字符串,就会在垃圾收集上浪费大量时间。

下面是一个使用StringBuilder的例子。

最后,想学习Java的小伙伴们!

关注“速学java”公众号就可以拿到一份我为大家准备的Java学习资料!

对Java感兴趣的小伙伴也可以加 小编V❤: suxuejava

图以显示Java字符串的不可变性