Arrays.copyOf() 和 System.arraycopy() 比较

Arrays.copyOf() 和 System.arraycopy() 对比

1:Object[] newElements = Arrays.copyOf(elements, len + 1)

析:Arrays.copyOf()作用是,创建长度为len+1的新数组,并将原数组的元素拷贝到新数组中。最后一个元素,原数组元素为基本数据类型时,为相应的默认值,否则为null。

2.System.arraycopy(elementData, index, elementData, index + 1, size - index)

析:public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src:源数组;
srcPos:源数组要复制的起始位置(index);
dest:目的数组;
destPos:目的数组放置的起始位置(index+1);
length:复制的长度(size-index)。

arraycopy() 作用是将index及之后的元素拷贝出来,放到index+1及之后的位置(将原数据覆盖掉)。

总结:

(1)原数组元素尚未取出,就被新来的覆盖掉了。(取出顺序与放置顺序一致,不用担心)
(2)新数组放不下(在此之前已做了扩容检查,不必担心。length+index <= dest.lengthw)。

原文地址:https://www.cnblogs.com/bridgestone29-08/p/13886873.html