传递给Java中的方法的数组 - 这里传递了什么?价值还是参考?

时间:2015-02-16 15:37:35

标签: java arrays pass-by-reference pass-by-value

当我将对象引用(数组是对象)传递给方法时,传递该值,对吗?

在以下代码中,初始值为: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 个答案:

答案 0 :(得分:3)

值始终传递,但请记住,对于数组,该值实际上是对数组的引用,而不是数组本身。

第一个valueOrRef方法更改myArgument指向的数组的内容,这就是为什么在调用方法后看到对数组的影响。