日期:2014-05-20  浏览次数:20606 次

问大家一个关于StringBuffer的问题


在swap方法中a.append之后,a="One more" 可是把a的值赋给了b按照常理上来说b的值也应该是One more呀。
可是为什么main方法中打印的是a=One more,b=Two呢?

------解决方案--------------------
你没弄清楚调用swap方法时的内存分配问题。

在调用swap时,在栈中又创建了一个指向new StringBuffer("one")的引用和指向new StringBuffer("two")的引用b,所以在swap方法里面的b=a是另一个引用b 而不是main方法里面的那个b
这样说你明白了吗?
------解决方案--------------------
swap方法参数a和b都只是main方法中a和b的一份引用的拷贝,在swap内部将a赋给b,只不过是将b的引用拷贝赋给了a的引用拷贝,对main方法中的a和b引用没有影响