欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Arrays.copyOf()和System.arrayCopy()的区别

程序员文章站 2024-02-17 12:33:30
...

在看ArrayList源码时看见,当扩容时采取的是Arrays.copyOf(),插入或删除时使用的是System.arrayCopy()

认为这两者之间的主要区别是Arrays.copyOf()在复制数组的元素是会创建一个新的数组,返回类型是数组,System.arrayCopy()值复制到已经存在的数组中去,返回类型是void

看copyOf源码发现,其实前者调用了后者

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
        @SuppressWarnings("unchecked")
        T[] copy = ((Object)newType == (Object)Object[].class)
            ? (T[]) new Object[newLength]
            : (T[]) Array.newInstance(newType.getComponentType(), newLength);
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }