当我将对象引用(数组是对象)传递给方法时,会传递值,对吗?
在以下代码中,初始值为:333。方法传递后,值将更改。为什么?在这种情况下,引用传递的是值吗?
数组是“特例”吗?
public static void main(String[] args) {
int[] myArray = { 333 };
valueOrRef(myArray); // Value or Reference?
System.out.println(myArray[0]); // 777 (changed)
}
public static void valueOrRef(int[] myArgument) {
myArgument[0] = 777;
}
另一种方法:(逻辑“传递值”):
public static void main(String[] args) {
int[] myArray = { 333 };
valueOrRef(myArray[0]); // Value or Reference?
System.out.println(myArray[0]); // 333 (after method still unchanged)
}
public static void valueOrRef(int myArray2) {
myArray2 *= 2;
}
始终传递该值,但请记住,对于数组,该值实际上是对数组的引用,而不是数组本身。
第一个方法更改myArgument指向的数组的内容,这就是为什么调用该方法后会看到对数组的影响。