这两个数组发生了什么?

时间:2016-06-03 12:06:14

标签: 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]);

输出:

1, 4
4, 4
42, 42

现在我的问题是,为什么第三次打印出y [0] 42而不是4?我只更改了x [0],而“x = y”在更改之前而不是之后,所以y [0] 42如何?我以为程序是从上到下。

2 个答案:

答案 0 :(得分:3)

数组不是原始值,它们是对象。当您编写x = y;时,第一个数组变得无法访问并且可以收集垃圾,现在这两个变量都指向第二个数组。从现在开始,您只能使用一个数组。

答案 1 :(得分:0)

xy都指向同一个数组。更改数组中某个元素的值将通过用于访问数组的引用进行反映。

更新: 看看https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html这将有助于您理解Java中数组的概念