回答这个问题首先必须要明白对象和引用变量的区别。String创建字符串对像不可改变,但String定义的引用可以改变的。引用仅仅存放的是对象的地址。下面就每句代码进行解释:
1:String str="ab";先在常量池中寻找“ab”,如果找到就将它的地址赋给str,如果没找到,会在常量池中创建一个String对象“ab”,并让str指向它。
2:str+="cd";这里将得到一个字符串“abcd”,同样会先去常量池中查找,没有则重新创建一个对象,原来的“ab”对象并没有改变,最后让str指向新创建的“abcd”对象。这里str仅仅是个引用,
3:System.out.println(str);//输出:abcd |