class A
{......}A p1=new A(); A p2=new A().
p1=p2;
个人理解是,p1和p2对应于同一个内存地址,只不过此地址分别对应两个名字p1p2,地址内容是一样的.
我想问的问题是,为什么关于字符串的就不是这样的.例如,
String a="kkkkk";
String b=a;
b="jjjj";
为什么这时改变b的值,但a不发生变化呢?难道b=a,不是对字符串的引用吗?
{......}A p1=new A(); A p2=new A().
p1=p2;
个人理解是,p1和p2对应于同一个内存地址,只不过此地址分别对应两个名字p1p2,地址内容是一样的.
我想问的问题是,为什么关于字符串的就不是这样的.例如,
String a="kkkkk";
String b=a;
b="jjjj";
为什么这时改变b的值,但a不发生变化呢?难道b=a,不是对字符串的引用吗?
b的值也不能改变a的值,因为String是不可变的
改变的是引用
{......}A p1=new A(); A p2=new A().
p1=p2
=================================
p1=p2 //这里p1只是引用p2变量
p1和p2还是不同的对象 内存地址也是不一样的至于String 它是final的 只要你创建了一个String 它的值永远不会改变
如果用别的变量对它附值 它也只是引用这个变量 内存还是指向刚创建时的对象
String a="kkkkk";//a指向‘kkkkk'。
String b=a;//b也指向‘kkkkk'。
b="jjjj";//b指向了‘jjjj',a不变。