Java阵列基础知识

时间:2015-01-12 13:38:30

标签: java

package basic;

class TestIt {

    static void doIt(int[] z) {
        z = null;
    }
}

class Arraydemo {
    public static void main(String[] args) {
        int[] myArray = { 1, 2, 3, 4, 5 };

        TestIt.doIt(myArray);

        for (int j = 0; j < myArray.length; j++)
            System.out.print(myArray[j] + " ");
    }

}

可以任意1请解释为什么代码的输出是1,2,3,4,5。 .................................................. .................................................. .................................................. .................................................. ............

3 个答案:

答案 0 :(得分:2)

Java是pass by value,这意味着当您分配z = null时,它不会更改myArray

要将myArray设置为null,您必须在main中明确地设置它:

class Arraydemo {
    public static void main(String[] args) {
        int[] myArray = { 1, 2, 3, 4, 5 };

        myArray = null;                

}

答案 1 :(得分:2)

在Java中,对象引用按值传递。当你这样做时

static void doIt(int[] z) {
    z = null;
}

您将对象引用z的值设置为null。此时,您的doIt方法无法再从myArray方法引用main局部变量,但数组保持不变,以及myArray变量,它。

答案 2 :(得分:1)

因为在java 中,对象的引用是按值传递的。 因此TestIt.doIt(myArray);只会在myArray方法中将null的值更改为doIt()

如果您希望在调用方法中更改该值,请使用:

myArray = TestIt.doIt(myArray);