为什么此Java代码会打印出此结果? (将新变量分配给已声明的变量)

时间:2019-11-23 22:05:11

标签: java variable-assignment

我理解第一个System.out.println()语句,但不理解第二个。我知道这与a = new ArrayHolder(false)行有关,但我不明白为什么该行不会将数组更改为[-1,-2]。而是打印出[0,5]。

public class ArrayChanger{

    public static void one(ArrayHolder a){
        a.setElement(1,5);
        a = new ArrayHolder(false);

    }

    public static void main(String[] as){
        ArrayHolder c = new ArrayHolder(true);
        System.out.println(c);
        one(c);
        System.out.println(c);
    }

}

public class ArrayHolder{

    private int[] list;

    public ArrayHolder(boolean up){
        if(up){
        list = new int[2];
        list[0] = 0;
        list[1] = 1;
        }

        else{
        list = new int[2];
        list[0] = -1;
        list[1] = -2;

        }

}

    public void setElement(int place, int replacement){
        list[place] = replacement;
    }

    public String toString(){
        return list[0] + " " + list[1];

    }


}

0 个答案:

没有答案
相关问题