System.arraycopy和Arrays.copyOf的原理解剖
数组的复制其实在很多业务情况下会用到,不同的业务情况下选择适合的方式来实施复制是每个开发人员要考虑的事情。
那么System.arraycopy
、Arrays.copyOf
到底是如何复制的呢?接下来就一起来讨论一下吧。
arraycopy
arraycopy
是System提供的native
静态方法,方法原型如下;
public static native void arraycopy(Object arg, int arg0, Object arg1, int arg2, int arg3);
参数arg:源数组对象
arg0:源数组的起始位置
arg1:目标数组对象
arg2:目标数组的起始位置
arg3:要复制的元素数量
copyOf
Arrays
类中存在着copyOf
的很多种实现方式,在进行数组的复制过程中,我们只需要调用其中一种即可,调用方式如下;
Arrays.copyOf(elementData, size);
参数elementData:源数组对象
size:目标数组的长度
来看一下copyOf的源码,如下;
首先,创建了一个和源数组元素相同类型的新数组;
接着调用了System.arraycopy函数,并且在arraycopy函数最后一个参数(要复制的元素数量)取了设置的size值和源数组长度两者的最小值;
最后返回了新数组。
欢迎大家关注我的公众号:Ijiran的编程思维。特别声明:未经允许,禁止任何形式的转载!
Java源码原理解析、大量面试经验分享。![]()
公众号:Ijiran的编程思维,随缘关注。转载请注明地址,谢谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix