Java中String类的值在创建后不可修改问题
在java中对于String类型字符串的值一旦创建后就不可更改的问题,对于刚入门的小伙伴难以理解,明明我就把string的值改变了呀,为什么说不能修改呢?
String a ="hello";String b = "java";a = a + b;
a的输出结果为 hellojava,a的值明明就改变了。
事实上String对象内容的改变是通过内存地址的改变来完成的,而其对象本身内容没有改变。
如图:
那么怎么验证呢?
public class demo01 {
public static void main(String[] args) {
String a ="hello";
System.out.println(System.identityHashCode(a));
String b = "java";
System.out.println(System.identityHashCode(b));
a = a + b;
System.out.println(System.identityHashCode(a));
}
}
象的地址并不一定样,说明a=a+b;后a的地址已经变了,不再指向原来的地址。