引用变量传参例题

发布时间 2023-10-04 11:05:15作者: 斌哥的小弟
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);
    }

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

        y = x;
    }
}

 

执行程序之后,控制台打印什么?

 

答案:AB B

 

解释:

 这里的y是AB,在语句x.append(y)执行后,x的值变为"AB",因为append方法会修改原始对象;

 而在语句y=x执行后,y的值将指向x所指向的对象,也就是"AB"。但是这个操作只是将y的引用指向了新的对象,对原始的y并没有任何影响。

 所以,最后打印出来的y仍然是"B",而不是"AB"。