举例说明:
String str1 = "abc"; 假设地址为0x01
String str2 = "def"; 假设地址为0x02
那么 str1.concat(str2); 得出的地址应该是0x03 并不是在str1的内存中添加内容"def" 而是重新开辟一块空间保存"abcdef"
StringBuffer str3 = new StringBuffer("abc"); 假设地址为0x05
StringBuffer str4 = new StringBuffer("def"); 假设地址为0x06
那么 str3.append(str4); 得出的地址应该是0x05 而是在str3的内存中继续添加内容"def"
0x05中变成"abcdef"
综上两个例子,说明string 定义的变量的内存空间将是固定不变的,而stringbuffer定义的变量内存空间是可以改变的,所以网上很多人说什么string内存固定,stringbuffer内存可变也就是这个原因,在此给大家做了一个详细的讲解。