Java中System.arraycopy()和Arrays.copyOf()的區別
阿新 • • 發佈:2018-12-31
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)); } }