数组拷贝和用 = 复制两种方式辨析
int arr[] = {1, 2, 3, 4, 5};
int copyarr[] = {0,0,0,0,0};
//第一种直接使用 = 赋值;本质上操作的是同一个数组.
copyarr = arr;
//第二种将arr数组的值按顺序依次赋值给copyarr数组.从而进行复制
for (int i = 0; i < arr.length; i++) {
copyarr[i] = arr[i];
}
//第三种使用copyOf方法进行数组的深拷贝
copyarr = Arrays.copyOf(arr, arr.length);
copyarr[0] = 100;
System.out.println(Arrays.toString(arr));
System.out.println("============");
System.out.println(Arrays.toString(copyarr));
-
直接使用 “=” 赋值的方法
结果为:
[100, 2, 3, 4, 5]
============
[100, 2, 3, 4, 5] -
第二种将arr数组的值按顺序依次赋值给copyarr数组.从而进行复制
结果为:
[1, 2, 3, 4, 5]
============
[100, 2, 3, 4, 5] -
第三种使用copyOf方法进行数组的深拷贝
结果为
[1, 2, 3, 4, 5]
============
[100, 2, 3, 4, 5]
从结果可以看出我们三种方法是有区别的,第一种在操作上只是为原来的数组起了个别名,在使用过程中实际改变的还是原来的数组元素.
其他两种方法都在内存中开辟了一个新的空间来存放复制后的数组.从而进行操作对原来的数组不存在影响.