本质上string 是引用类型的。
string a="xxx";
a指向字符串xxx所在的地址。
string b=a;
会把a的地址给b,此时a和b保存相同的地址,所以他们的值是相同的。
a="yyy";
此时并不是把a地址的内容改为yyy,而是重新分配地址保存字符串"yyy".修改a的地址为指向yyy.
于是,a有个新地址指向yyy,b仍是老地址指向xxx.
b="zzz";
此时并不是把b地址的内容改为zzz,而是重新分配地址保存字符串"zzz".修改b的地址为指向zzz.
于是,不再有变量指向xxx,xxx内存会被回收。
String a=b是重新定义一个a,并把b的值给了a,
String a="a";
String b="a";
这样的他们的地址才是相同的
很多人这个地方都搞不明白,java里面对象间是没有值传递的,全部都是地址传递。
值