函数中的Java数组赋值
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中的内存,为什么a是不变的
# 1 楼答案
在java中,将方法的参数更改为引用其他对象不会对原始参数产生任何影响。 因此,在执行
mystery
之后,a不指向tmp要完成交换
mystery
方法需要直接处理arr