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)。