System.arraycopy() 与 Arrays.copyOf()两个方法的区别

两个方法都是数组拷贝的方法,两个方法之间最大的区别就是Arrays.copyOf()在数组拷贝过程中创建新的数组,将原有数据拷贝到新数组中去。而System.arraycopy() 仅拷贝数组的内容,不会创建新数组。


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;   
}  
通过Arrays.copyOf()的源码可以看出,copyOf方法定义的时候也调用了System.arraycopy() 方法。


System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));
Arrays.copyOf()int[] original, int newLength)
通过上述调用方式可以看出,System.arraycopy方法在使用时需要原始数据,拷贝数据,原始地址及目的地址等信息。而Array.copyOf方法只需要选择拷贝数据的长度即可,

可以将Array.copyOf方法看做简单版的System.arraycopy。


System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength));

你可能感兴趣的:(System.arraycopy() 与 Arrays.copyOf()两个方法的区别)