Java 混淆增量使用
所以我在做一个UIL实践测试,这个问题出现了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],但答案
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
现在指向一个完全不同的内存块(尽管引用本身仍在内存中的同一位置)