Java数组的复制Arrays.copyOf()、System.arraycopy()、nums.clone()
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
实例:
array=new int[]{0,0,1,1};
int[] copy = Arrays.copyOf(array, array.length);
System.out.println(array==copy);
//false
使用场景,我们需要保留原数据,但需要排序后的数据
System.arraycopy()
System.arraycopy调用java内存模型中本地方法栈区
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int
.clone()
array=new int[]{0,0,1,1};
int[] clone = array.clone();
System.out.println(clone==array);
//flase
从以上看出clone是创建了不同的对象,那么对于二维数组呢
int [][] array=new int[][]{{0,0},{1,1}};
int[][] arrays = array.clone();
arrays[0][0]=1;
System.out.println(array[0][0]);
System.out.println(arrays[0]==array[0]);
//1
//true
所以在使用clone时,注意其是浅克隆,那么如何使用 遍历克隆