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

SCJP一道题目求解。
Java code
public class Test {
    public static void main(String[] args) {
        StringBuffer a = new StringBuffer("A");
        StringBuffer b = new StringBuffer("B");
        operate(a, b);
        System.out.println(a + "," + b);
    }

    static void operate(StringBuffer x, StringBuffer y) {
        x.append(y);
        y = x;
    }
}


请问为什么输出 AB,B 呢。。求详解。。

------解决方案--------------------
operate(a, b);

 static void operate(StringBuffer x, StringBuffer y) {
x.append(y);
y = x;
}

中x跟a指向同一个StringBuffer,y和b是指向同一个StringBuffer,y=x,只是将y的指向变为x和a指向的StringBuffer,并没有改变b的指向。