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

帮忙看一段代码
class   e
{

public   static   void   main(StringBuffer[]   args)
{
StringBuffer   a=new   StringBuffer( "A ");
StringBuffer   b=new   StringBuffer( "B ");
method(a,b);
System.out.println(a+ ", "+b);
}
static   void   method(StringBuffer   x,StringBuffer   y)
{
x.append(y);
y=x;
}

}
我感觉结果应该是AB,AB   可是答案是AB,B这里的y=x;有什么用

------解决方案--------------------
你对变量的作用空间还不理解


参考我在此篇文章中的解答
http://community.csdn.net/Expert/topic/5532/5532201.xml?temp=3.124416E-03
------解决方案--------------------
static void method(StringBuffer x,StringBuffer y)
{
x.append(y); //x 是a的引用,该操作修改了a的内容
y=x; // 该操作仅仅将y的引用从b变成x,并没有改变b的内容
}