数组传递给Java中的方法这里传递什么?价值还是参考?
当我将一个对象引用(数组是对象)传递给一个方法时,值就被传递了,对吗
在以下代码中,初始值为: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;
}
# 1 楼答案
值总是传递的,但请记住,对于数组,值实际上是对数组的引用,而不是数组本身
第一个
valueOrRef
方法会更改myArgument
指向的数组的内容,这就是为什么调用该方法后会看到对数组的影响