当前位置: 代码迷 >> J2SE >> SCJP一路题目求解
  详细解决方案

SCJP一路题目求解

热度:107   发布时间:2016-04-24 12:33:54.0
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的指向。