0
点赞
收藏
分享

微信扫一扫

Java数组的复制Arrays.copyOf()、System.arraycopy()、nums.clone()


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时,注意其是浅克隆,那么如何使用 遍历克隆


举报

相关推荐

0 条评论