数组的复制其实在很多业务情况下会用到,不同的业务情况下选择适合的方式来实施复制是每个开发人员要考虑的事情。
那么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源码原理解析、大量面试经验分享。