System.arraycopy与Arrays.copyOf的比较

System.arraycopy的参数及使用方法:

下面是 System.arrayCopy的源代码声明 :

public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
代码解释:
    Object src : 原数组
    int srcPos : 从元数据的起始位置开始
    Object dest : 目标数组
    int destPos : 目标数组的开始起始位置
    int length  : 要copy的数组的长度

比如 :我们有一个数组数据 byte[] srcBytes = new byte[]{2,4,0,0,0,0,0,10,15,50}; // 源数组

​ byte[] destBytes = new byte[5]; // 目标数组

我们使用System.arraycopy进行转换(copy)

System.arrayCopy(srcBytes,0,destBytes ,0,5)

上面这段代码就是 : 创建一个一维空数组,数组的总长度为 12位,然后将srcBytes源数组中 从0位 到 第5位之间的数值 copy 到 destBytes目标数组中,在目标数组的第0位开始放置.
那么这行代码的运行效果应该是 2,4,0,0,0

例如:删除指定索引位置的元素

public static void main(String[] args) {
    int[] arr={1,2,3,4,5,6,7,8,9};
    System.arraycopy(arr,3,arr,2,6);
    arr[arr.length-1]=0;
    for (int i : arr) {
        System.out.print(i+" ");
    }
}
Arrays.copyOf方法的参数及使用方法:
Arrays.copyOf(array, to_index);
注:
	to_index:表示新数组的长度

示例代码:

   public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7,8,9};
        int[] newarr = Arrays.copyOf(arr, 3);
        for (int anInt : newarr) {
            System.out.println(anInt);
        }

    }
posted @ 2021-06-15 10:32  __先森  阅读(94)  评论(0)    收藏  举报