读书人

SCJP一路题目求解

发布时间: 2011-11-18 22:58:52 作者: rapoo

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的指向。

读书人网 >J2SE开发

热点推荐