为什么变量不随方法改变?

时间:2014-11-20 13:24:07

标签: java variables

所以我对java有点新,我跟着一些教程,他展示了如何在这样的方法中使用数组的例子:

public static void main(String[] args){
    int myArray[] = new int[2];
    myArray[1] = 1;  //Setting the array to equal 1
    change(myArray);

    System.out.println(myArray[1]);  //Prints 2 instead of 1
}

public static void change(int a[]){
    a[1] = 2;

}

但是当我将数组更改为int时,它突然不再起作用了:

public static void main(String[] args){
    int myInt = 1;  //Setting the int to equal 1
    change(myInt);

    System.out.println(myInt);  //Still prints 1
}

public static void change(int a)
{
    a = 2;
}

所以我的问题是:为什么我可以用方法而不是int来改变数组?

1 个答案:

答案 0 :(得分:2)

int类型,但数组(如String[])是引用类型。

由于在Java中,所有函数参数都是按值传递的,因此会获取int的深层副本,但只会获取数组的浅表副本(即引用按值复制但不是提到)。

不能void change(int a[])函数内做的是让调用者中的相应变量amyArray)引用不同的数组