1. 程式人生 > >Java中System.arraycopy()和Arrays.copyOf()的區別

Java中System.arraycopy()和Arrays.copyOf()的區別

System.arraycopy()
這是一個由java標準庫提供的方法。用它進行復制陣列比用for迴圈要快的多。
arraycopy()需要的引數有:源陣列,從源陣列中的什麼位置開始複製的偏移量,目標陣列,從目標陣列中的什麼位置開始複製的偏移量,需要複製的元素個數

檢視原始碼,它呼叫的是本地方法,應該是用c語言封裝好的

Arrays.copyOf
在複製陣列時會返回一個新陣列
copyOf()需要有的引數:源陣列,需要複製的元素個數

檢視原始碼:

public static int[] copyOf(int[] original, int newLength) {
        int[] copy = new int[newLength];
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
    }

其仍呼叫的是System.arraycopy()這個方法,並且返回一個新陣列

附測試Demo:

public class CopyDemo {
    public static void main(String[] args) {
        int[] a = new int[] {1, 2, 3, 4, 5, 6, 7};
        int[] b = new int[5];

        System.arraycopy(a, 0, b, 0, 5);
        System.out.println(Arrays.toString(b));


        int[] c = {1, 2, 3, 4, 5};
        int[] d = Arrays.copyOf(c, 5);

        System.out.println(Arrays.toString(d));
    }
}