JAVA数组的拷贝

本文探讨了Java中二维数组的实现方式,并通过实例详细解释了一维数组与二维数组的拷贝机制的区别。通过对一维数组拷贝行为的观察,进而分析了二维数组拷贝时的引用传递特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在java中,同C++一样,是没有直接的二维数组的,其中二维数组的实现是多个一维数组重叠而成.

 

对于普通的一维数组:

int[] arr = new int[5];

//赋值[1,2,3,4,5]

这时,我们在执行

int[] b = a.clone();

如果操作

b[1] = 12;

此时,我们输出a[1]和b[1],发现值是1,10

得出结论:

对一维数组的拷贝操作是直接拷贝其中的值.而不是拷贝引用.

 

因此,如果此时有一个二维数组:

170200_jxT4_2481244.png

二维数组的构建方式是在0xa0的引用空间中存入其它一维数组的引用地址.

如果我们此时直接对二维数组进行拷贝操作.相当于:

170513_85sU_2481244.png

我们可以看到,此时不过是将引用拷贝了一份儿而已,因此在访问新的拷贝的数组时,仍然访问原来的值.修改的也是原来的栈空间.

 

转载于:https://my.oschina.net/qkmc/blog/1581098

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值