JAVA---数组的复制

JAVA---数组的复制

package lll;

public class Test {
	public static void main(String[] args) {
		int[] arr1=new int[10];
		int[] arr2;
		//给arr1赋值并打印
		for(int i=0;i<arr1.length;i++){
			arr1[i]=i;
			System.out.print(arr1[i]+" ");
		}
		//执行arr2=arr1操作
		arr2=arr1;
		//对arr2赋值
		for(int i=0;i<arr2.length;i++){
			arr2[i]=i*2;
		}
		System.out.println();
		//打印arr1
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
	}
}

结论:执行arr2=arr1操作后并不会在内存区域开辟一块新的空间,仅仅是将arr2指向arr1原来所指向的内存区域,所以对arr2进行修改其实就是对arr1进行修改。这并不是真正的数组复制

真正的数组复制

package lll;

public class Test {
	public static void main(String[] args) {
		int[] arr1,arr2;
		//arr1初始化
		arr1=new int[]{1,2,3,4,5};
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
		System.out.println();
		//arr2初始化
		arr2=new int[arr1.length];
		//真正的数组复制
		for(int i=0;i<arr1.length;i++){
			arr2[i]=arr1[i];
		}
		//修改arr2数组的值
		for(int i=0;i<arr2.length;i++){
			arr2[i]=0;
		}
		//打印arr1数组
		for(int i=0;i<arr1.length;i++){
			System.out.print(arr1[i]+" ");
		}
		
	}
}

由结果可以看到,arr1数组的值并没有因为arr2数组值的改变而改变,证明arr1和arr2所指向的内存区域是不同的,这是真正的数组复制。

posted @ 2022-01-05 15:12  ice--cream  阅读(107)  评论(0编辑  收藏  举报