假设我们有一个包含三个整数的数组array2,并以某种方式对其进行了初始化。
int[] array2 = new int[3];
array2[0] = 0;
array2[1] = 3;
array2[2] = 5;
我们创建它的克隆并从中获取所有值array2。
int[] array3 = new int[3];
array3 = array2;
它的价值观开始发生变化……
array3[0] = 1;
array3[1] = 2;
array3[2] = 3;
而且,在调试时,我们惊恐地发现值array3 = {1,2,3}和array2由于某种原因也变成{1,2,3}了正确的值。{0,3,5}
如何使两个数组引用的内存区域变得彼此不同以及在这种情况下如何设置变量?
排队:
链接
array2被复制到对象array3中。因此,执行完这一行后,array2andarray3将引用同一块内存区域。您可以自己复制值,例如,像这样:
您还可以使用
Arrays.copyOf(...),Object.clone()或在循环中将一个数组的元素复制到另一个数组(这在这里是可能的,因为给定的数组存储原始类型的元素)。