首先探讨String的运行状态
String a = "abc";
a = a+"d";
在上面的代码中,虚拟机为a分配内存aOne(随便起的名字),用来存储"abc",然后在下一行代码,虚拟机又为a分配内存aTwo,用来存储"abcd",这时,a指向aTwo而断开与aOne的连接。但是aOne中依然保存着"abc"。
下面探讨StringBuffer的运行状态
StringBuffer a = "abc";
a = a+"d";
在上面的代码中,虚拟机为a分配内存aOne(随便起的名字),用来存储"abc",然后在下一行代码,这时,a指向的依然是aOne内存。只是在aOne后面增加一块内存来存放"d"。