Java 这两个阵列发生了什么?
输出:Java 这两个阵列发生了什么?,java,arrays,Java,Arrays,输出: int[] x = new int [] {1,2,3}; int[] y = new int [] {4,5,6,7}; System.out.println(x[0] + ", " + y[0]); x = y; System.out.println(x[0] + ", " + y[0]); x[0] = 42; System.out.println(x[0] + ", " + y[0]); 现在我的问题是,为什么y[0]42在第三个打印输出中,而
int[] x = new int [] {1,2,3};
int[] y = new int [] {4,5,6,7};
System.out.println(x[0] + ", " + y[0]);
x = y;
System.out.println(x[0] + ", " + y[0]);
x[0] = 42;
System.out.println(x[0] + ", " + y[0]);
现在我的问题是,为什么y[0]42在第三个打印输出中,而不是4?我只更改了x[0],而“x=y”出现在更改之前,而不是之后,那么y[0]42又是怎样的呢?我认为程序是从上到下的。数组不是原始值,它们是对象。当你写
x=y代码>第一个数组变得不可访问且可垃圾回收,现在两个变量都指向第二个数组。从现在开始,您只能使用一个数组。x
和y
都指向同一个数组。更改数组中某个元素的值将通过用于访问数组的引用反映出来
更新:
看一看,这将帮助您理解Java中数组的概念,因为x=y
。您正在使x
引用与y
相同的数组。
1, 4
4, 4
42, 42