本帖最后由 a397131103 于 2015-5-16 23:42 编辑
首先,main方法先进栈,在堆内存建立俩个string类型对象s1, s2,假设s1地址值是0x001保存abc,s2地址值是0x002保存xyz,
然后show方法进栈,s1,s2 指向对像内存的地址值 , s1=abc ,s2=xyz,
s1 = s2+s1+”Q”; // s1=xyz+abc+Q 字符串相加获得一个新的字符串. 由于string的不变性 ,s1不会改变,只能在堆中重新创建新对象地址值假设为0x003保存xyzabcQ赋给s1,s1指向0x003
s2 = “W”+s1; // 同上 s2 指向新的地址值0x004
show方法执行完毕,出栈死亡后,s1 s2 无法指向 0x003 0x004的地址 还是原来的0x001 0x002 地址
所以 值不变还是 abc-----xyz |