当复制一个数组时,我们不要像如下进行数组的“复制”,本质并不是数组的复制,只是将数组的内存地址传递了过去,下面举个例子:
public class Test {
public static void main(String[] args) {
int[] array1 = {500, 600};
int[] array2 = array1; //将数组array1的地址赋给了数组array2
System.out.println(array1);
System.out.println(array2); //结果输出是相同的地址
System.out.println(array1[0] + "," + array1[1]);//输出验证
System.out.println(array2[0] + "," + array2[1]);
array2[0] = 66; //修改数组array2的值
System.out.println(array1[0] + "," + array1[1]);//输出发现数组array1的值也跟着改变,
System.out.println(array2[0] + "," + array2[1]);//原因是两个数组指向的都是同一内存地址
}
}
输出结果如下:
[I@16b98e56
[I@16b98e56
500,600
500,600
66,600
66,600
array1和array2记录着地址,指向的是同一堆内存中的地址,对其中任何一个值进行改变都将直接改变所指向地址中存的值,所以一般不会这样对数组进行复制,会出现意想不到的问题。