函数中的Java数组赋值

时间:2014-04-24 20:56:46

标签: java arrays variable-assignment

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之后的存储器的方法,为什么不变?

1 个答案:

答案 0 :(得分:4)

java中更改方法的参数以引用其他对象对原始参数没有任何影响。 因此,在执行mystery之后,没有指向tmp。

要完成交换,您的mystery方法需要直接使用arr