Java 混淆增量使用

Java 混淆增量使用,java,arrays,int,increment,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],但答案

所以我在做一个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]。因为它只是列表[2]++,我想它只是添加,但它没有。为什么最后的增量没有包含在输出中

list = new int[4];

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

list=new int[4]这更改了本地参考
列表
地址。 但是,VAL保留了旧地址。 因此,对新数组执行最后一个增量。VAL保留了对其进行操作的旧数组。

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