Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.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/13.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,我对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中,数

我对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生效,反之亦然。。。两者都指向同一个对象

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


bcoz
x
y
引用的是相同的数组如果x和y具有相同的数组,当您要更改y的值时,它也会更改x的值。