令人困惑的增量使用

时间:2013-11-14 21:17:10

标签: java arrays int increment

所以我正在进行UIL练习测试,出现了这个问题。

public void fun(int[] list){
list[2]++;
list[1] = list[0];
list = new int[4];
list[2]++;
}

//////////////////////////
// client code
int[] vals = {2, 7, 3};
fun(vals);
out.print( Arrays.toString(vals) );

我试了一下并得到[2,2,5],但答案是[2,2,4]。因为它只是list [2] ++,我认为它只会添加,但它没有。为什么最后一个增量不包含在输出中?

3 个答案:

答案 0 :(得分:3)

list = new int[4];

最后一行增加了不同数组中的元素。

答案 1 :(得分:0)

list = new int[4];这改变了本地参考list地址。 但是,vals保留了旧地址。 所以,最后一次增量完成到一个新数组。并且vals保留了旧数组的操作。

答案 2 :(得分:0)

当您致电fun(vals)时,本地变量list指向vals的位置。但是,在创建新数组之后,局部变量list现在指向一个完全不同的内存块(尽管引用本身仍然在内存中的相同位置)。