String s = "sss", s存的是地址,它指向内存里面的一块空间,这块空间存储的数据是"sss",
String的值不能改变的意思是不能再不改变s地址的前提下对s指向的数据进行修改,
String s = "kuan"; 创建一个String对象s, s = s + "good";会重新创建对象,在内存中重新开辟空间存储新数据,s存储的地址发生改变
当运行String s = "kuan";这句语句的时候,s就指向堆内存中存储"kuan"的内存地址;
当执行s = s + "good";这句语句的时候,相当于再堆内存中开辟了一个对象"good";
最后合成的s的内容就是"kuangood",它所在的堆内存地址被s所指向,s就不再指向"kuan"这个对象的内存地址了,就会被垃圾回收掉了。
String s = "kuan";
s = s + "good";
String 类型对象一旦声明了就不能够再改变:说的是kuan这个字符串一旦声明就不能够再改变了,而String s的s只是一个引用,其存放的是kuan这个字符串的内存地址
s+"good"是完成两个字符串的连接,形成一个新的字符串kuangood,而s=。。。。 实质就是将新字符串在内存的地址赋给s
不知道我的就是你是否能懂,不懂可以再问我