【发布时间】:2014-06-10 08:56:48
【问题描述】:
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不变呢?
【问题讨论】:
-
您可以在函数内部更改数组中的一个或所有索引,但这种形式的赋值不起作用。
-
如果我们将 StackOverflow 视为使用
语言进行编程的指南,我认为除了 stackoverflow.com/questions/40480/is-java-pass-by-reference 页面之外,这个问题/答案是有益的。
标签: java arrays variable-assignment