所以我对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来改变数组?
答案 0 :(得分:2)
int
是值类型,但数组(如String[]
)是引用类型。
由于在Java中,所有函数参数都是按值传递的,因此会获取int
的深层副本,但只会获取数组的浅表副本(即引用按值复制但不是提到)。
你不能在void change(int a[])
函数内做的是让调用者中的相应变量a
(myArray
)引用不同的数组