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);
}
}