论java中System.arrayCopy()与Arrays.copyOf()的区别

本文通过实例对比了System.arraycopy()和Arrays.copyOf()两种数组拷贝方法的区别。System.arraycopy()仅拷贝数组元素,而Arrays.copyOf()则创建新数组并拷贝元素。文章还探讨了两者的底层实现及使用场景。

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

如果我们想拷贝一个数组,我们可能会使用System.arraycopy()或者Arrays.copyof()两种方式。在这里,我们将使用一个比较简单的示例来阐述两者之间的区别。

首先先说System.arraycopy()

接下来是代码

       int[] arr = {1,2,3,4,5};  

       int[] copied=new int[10];

System.arraycopy(arr,0,copied,1,5);//这里的arr是原数组,0是原数组拷贝的其实地址。而copied是目标数组,1是目标数组开始存放的位置,5则是数组存放的长度。


System.out.println(Array.toString(copied));

运行结果如下:

[0,1,2,3,4,5,0,0,0,0];

再来说arrays.copyof()

int copied=arrays.copyof(arr,10);

System.out.println(Arrays.toString(copied));

copied=arrays.copyof(arr,3);

System.out.println(Arrays.toString(copied));

运行结果如下:

[1,2,3,4,5,0,0,0,0,0]

[1,2,3]

这里我们来谈谈他们的区别,这也是之前我一直没弄懂的地方:

两者的区别在于,Arrays.copyOf()不仅仅只是拷贝数组中的元素,在拷贝元素时,会创建一个新的数组对象。而System.arrayCopy只拷贝已经存在数组元素。

如果我们看过Arrays.copyOf()的源码就会知道,该方法的底层还是调用了System.arrayCopyOf()方法。

而且System.arrayCopy如果改变目标数组的值原数组的值也会随之改变。

转载于:https://www.cnblogs.com/LiuYuXuanIsSoGood/p/7923268.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值