Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这两个阵列发生了什么?_Java_Arrays - Fatal编程技术网

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