“为什么 r 的值会变成 2 2 而我正在改变,在另一个函数中也是如此?”
class Ideone {// main
public static void main(String[] args) throws java.lang.Exception {
int[] r = new int[2];
for (int i = 0; i < r.length; i++)
System.out.println(r[i]);
int[] catch1 = doesThisWork(1, 2, r);
// the value of r changes!?
for (int i = 0; i < r.length; i++)
System.out.println(r[i]);
}// doesthisWork
public static int[] doesThisWork(int a, int b, int[] re) {
for (int i = 0; i < re.length; i++) {
re[i] = b;
}
return re;
}
}
最佳答案
doesThisWork
接受对 r
数组的引用,这意味着它能够更改该数组的内容。虽然为方法内的 re
变量分配新值不会在方法返回时更改 r
的值(因为 Java 是按值传递语言),但re
引用的对象的状态(在您的情况下是一个数组)会影响 r
的状态,因为 r
和 >re
引用同一个对象。
关于java - 数组 "r"的值更新为 2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30690541/