为什么Java数组的行为如此?

时间:2016-03-16 15:15:34

标签: java arrays

我是java的新手,并不完全了解这是如何工作的。

int[] x = {5, 6, 7, 8, 9};
int[] y = x;
y[2] = 10; 

在代码中,为什么x[2]现在等于10,y[2]等于10?

我不明白为什么它不仅设置y[2] = 10而离开x[2] = 6

这是因为y数组是对x数组的引用吗?

2 个答案:

答案 0 :(得分:4)

  

这是因为y数组是对x数组的引用吗?

是。第int[] y = x;行恰好说明了这一点。

如果您想要副本,可以

int[] y = Arrays.copyOf(x, x.length);

答案 1 :(得分:0)

Java数组中的

是对象,即使保持原语...所以当你这样做时 类似的东西:

int[] x = { 5, 6, 7, 8, 9 };
int[] y = x;
y[2] = 10;
System.out.println(x[2] + "  " + y[2]);

你正在为x和y指定相同的引用... x中的任何更改都将在y中生效,反之亦然......两者都“指向”同一个对象......

请查看下面的图片以获得更具说明性的解释

enter image description here