为什么Java数组的行为是这样的?
我对java非常陌生,不太了解它是如何工作的为什么Java数组的行为是这样的?,java,arrays,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数组的引用吗 这是因为y数组是对x数组的引用吗 对。行int[]y=x就是这么说的 如果你想要一份,你可以 int[] y = Arrays.copyOf(x, x.length); 在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数组的引用吗
这是因为y数组是对x数组的引用吗
对。行int[]y=x代码>就是这么说的
如果你想要一份,你可以
int[] y = Arrays.copyOf(x, x.length);
在Java中,数组是对象,即使hold原语。。。所以当你这么做的时候
比如:
int[] x = { 5, 6, 7, 8, 9 };
int[] y = x;
y[2] = 10;
System.out.println(x[2] + " " + y[2]);
您正在为x和y指定相同的引用。。。x的任何变化都将在y生效,反之亦然。。。两者都指向同一个对象
请查看下图以获得更具说明性的解释
bcozx
和y
引用的是相同的数组如果x和y具有相同的数组,当您要更改y的值时,它也会更改x的值。