Java 数组的深拷贝和浅拷贝

本文详细介绍了Java中一维数组的浅拷贝与深拷贝的六种实现方法,包括直接引用、clone()、System.arraycopy()、Arrays.copyOf()、copyOfRange()和for循环,并通过实例对比展示了它们在浅拷贝中的区别。同时,针对二维数组的浅拷贝特性和clone()方法进行了深入探讨。
摘要由CSDN通过智能技术生成

Java 数组的深拷贝和浅拷贝

一维数组 的拷贝

一维数组的拷贝共有6种方法
只有方法一是浅拷贝,
其余均为深拷贝。

下边以实际代码测试结果进行说明。

		int[] arr1 = {0, 1, 2, 3, 4, 5, 6}; 

下面每个方法拷贝完arr1后,将arr1[0]的值改变,观察新数组的第0个元素是否改变。

方法一: 直接引用(两个变量引用同一个数组)

		int[] arr2 = arr1;
		int[] arr3 = new int[7];
		arr3 = arr1;

		arr1[0] = 10;

运行结果:
在这里插入图片描述

方法二:clone() 一维数组

        int[] arr4 = new int[7]; 
        arr4 = arr1.clone();
        int[] arr5 = (int[])arr1.clone();
		arr1[0] = 10;

运行结果:
在这里插入图片描述

方法三:System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

        int[] arr6 = new int[7];
        System.arraycopy(arr1, 0, arr6, 0, 7);
		arr1[0] = 10;

运行结果:
在这里插入图片描述

方法四:Arrays.copyOf(T[] original, int newLength)

        int[] arr7 = Arrays.copyOf(arr1, 7);
		arr1[0] = 10;

运行结果:
在这里插入图片描述

方法五:Arrays.copyOfRange(T[] original, int from, int to)

        int[] arr8 = Arrays.copyOfRange(arr1, 0, 7);
		arr1[0] = 10;

运行结果:
在这里插入图片描述

方法六:for循环拷贝

        int[] arr9 = new int[7];
        for(int i = 0; i < 7; i++) arr9[i] = arr1[i];
		arr1[0] = 10;

运行结果:
在这里插入图片描述

二维数组:clone()

        int[][] twoDimArr = {{0, 1, 2, 3, 4, 5, 6}};
        int[][] twoDimArr1 = (int[][])twoDimArr.clone();
        twoDimArr[0][0] = 10;

运行结果:
在这里插入图片描述
二维数组使用clone()进行拷贝,是浅拷贝。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值