Java 数组的深拷贝和浅拷贝

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()进行拷贝,是浅拷贝。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值