Java 图表展示String的不变性

Java 图表展示String的不变性

这里有一系列图表来说明Java中String的不变性 。

1. 声明一个字符串

String s = "abcd";

s存储了String对象的引用。下面的箭头应解释为“存储引用”。

String-Immutability-1

2. 将String变量赋给了一个变量

String s2 = s;

由于是同一个String对象,那么s2存储相同的String引用 。

String-Immutability-2

3. 拼接字符串(Concat string)

s = s.concat("ef");

现在新String对象生成,s指向新的对象

string-immutability-650x279

小结

一旦字符串在RAM(堆)上创建,它不能被改变。我们应该注意到,字符串的所有方法不改变字符串本身,而是返回一个新的String。

如果需要一个可以修改字符串,要用到StringBuffer或StringBuilder。否则,将会垃圾回收上浪费大量时间,因为每次都创建一个新的String。这里是StringBuilder的用法的例子。