Java系列 之 Java复制(拷贝)数组的4种方法:arraycopy()方法、clone() 方法、copyOf()和copyOfRan
在Java中,数组是一个对象,arraycopy()
方法和 System.arraycopy()
方法用于在同一类型的数组之间复制数据,clone()
方法用于克隆数组,copyOf()
和 copyOfRange()
方法用于创建新数组并复制数据。
- arraycopy() 方法
System.arraycopy()
是一个 native 方法,它可以直接操作内存,因此它的执行速度通常会比使用循环复制数组元素更快。
public static void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length)
- src:源数组。
- srcPos:源数组的起始位置。
- dest:目标数组。
- destPos:目标数组的起始位置。
- length:要复制的数组元素的数量。
示例代码:
int[] src = {1, 2, 3, 4, 5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, 5);
- clone() 方法
clone()
方法用于创建并返回此对象的一个副本。
protected Object clone() throws CloneNotSupportedException
注意:Object 类本身实现了 Cloneable 接口,如果要调用 clone() 方法,需要先实现 Cloneable 接口并覆盖 clone() 方法。
示例代码:
int[] src = {1, 2, 3, 4, 5};
int[] dest = src.clone();
- copyOf() 方法
Arrays.copyOf()
方法用于创建一个新的数组,并将原数组中的元素复制到新数组中。
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType)
- original:原数组。
- newLength:新数组的长度。
- newType:新数组的类型。
示例代码:
int[] src = {1, 2, 3, 4, 5};
int[] dest = Arrays.copyOf(src, 10);
- copyOfRange() 方法
Arrays.copyOfRange()
方法用于创建一个新的数组,并将原数组的指定范围复制到新数组中。
public static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)
- original:原数组。
- from:开始复制的起始索引(包含)。
- to:结束复制的结束索引(不包含)。
- newType:新数组的类型。
示例代码:
int[] src = {1, 2, 3, 4, 5};
int[] dest = Arrays.copyOfRange(src, 0, 3);
以上就是Java数组复制的四种方法。
评论已关闭