二维数组中的四种拷贝

本文详细介绍了二维数组的四种拷贝方法:for循环拷贝、clone、System.arraycopy和Arrays.copyOf,并通过实例说明了它们在引用类型数组中的工作原理。特别强调了浅拷贝和深拷贝的区别。

如同一维数组一样,二维数组中也有四种拷贝方式,且与一维数组中的拷贝方式一样

分别为:

1.for循环拷贝

2.clone

3.System.arraycopy

4.Arrays.copyOf

四种用法在上节都已经讲过,那让我们看看在二维数组中与在一维数组中会有什么不

同。

1.for循环拷贝


输出结果


可以看出改变array[0][0]的值array2[0][0]的值并不发生改变,原因是array2拷贝只是

让array所引用的地址拷贝得到了array中的值,本质上与array引用值的地址没有关

系,所以改变array2中的值,array中的值并不发生改变。这里我们用图示再来看看


然后让我们看看引用类型的二维数组


拷贝的函数


输出结果


改变t1[0][0]的值后t2[0][0]的值也一起改变,原因是t1,t2是引用类型的数组。数组中存储的是一块地址。指向储存值得地址,拷贝得到的也是地址,且是同一块区域的地址,改变任一地址中的值,另一个对应位置的值也发生相应改变。我们用图示来了解一下


可以清楚的看出拷贝后,数组中的地址与原数组对应同一块地址。属于浅拷贝。剩下三种拷贝方式与第一种类似,我们就只举例它的用法。

2.clone


引用类型的数组


3.System.arraycopy


引用类型数组


4.Arrays.copyOf


引用类型数组


值得注意的是引用类型的二维数组在栈中的存储方式。上述就是二维数组的四种拷贝的用法。

(新手入门,如有错误,请多多指教)

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值