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]);
输出:
1, 4
4, 4
42, 42
现在我的问题是,为什么第三次打印出y [0] 42而不是4?我只更改了x [0],而“x = y”在更改之前而不是之后,所以y [0] 42如何?我以为程序是从上到下。
答案 0 :(得分:3)
数组不是原始值,它们是对象。当您编写x = y;
时,第一个数组变得无法访问并且可以收集垃圾,现在这两个变量都指向第二个数组。从现在开始,您只能使用一个数组。
答案 1 :(得分:0)
x
和y
都指向同一个数组。更改数组中某个元素的值将通过用于访问数组的引用进行反映。
更新: 看看https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html这将有助于您理解Java中数组的概念