public static void mystery(int[] arr) {
int[] tmp = new int[arr.length];
tmp[0] = arr[arr.length-1];
tmp[arr.length-1] = arr[0];
arr = tmp;
}
int[] a = {2,3,4};
mystery(a);
当我运行这个时,即使在调用神秘(a)之后我也知道了,a的值仍然是
a = {2,3,4};
Java数组是可变的,所有参数都是通过引用传递的。由于在方法arr指向存储在tmp之后的存储器的方法,为什么不变?
答案 0 :(得分:4)
在java中更改方法的参数以引用其他对象对原始参数没有任何影响。
因此,在执行mystery
之后,没有指向tmp。
要完成交换,您的mystery
方法需要直接使用arr