字符串一旦初始化就不可以被改变
注意:这里指的是字符串在常量池里面的值不能发生改变。而不是说字符串的引用不能变。
String s = "Hello";
java虚拟机先在常量池中找是否有Hello,如果有,就把这个地址赋值给s,如果没有就创建一个"Hello",并把这个地址赋值给s;
s = s + "world!";
java虚拟机先把字符串连接起来变为"Helloworld!",然后再在常量池中找,如果找到就把地址赋值给s,如果没找到就创建一个字符串"Helloworld!",并把这个地址赋值给s.
这两次执行完,s的地址变了,对象的内容是变不了的,因为字符串一旦初始化就不可以被改变,变得只能是地址。 |