17. Java 复制数组
在 Java 中,复制数组的一个常用方法是使用 System.arraycopy()
。这个方法允许你将一个数组的部分或全部元素复制到另一个数组中。它非常高效,尤其是在需要复制大量数据时。
System.arraycopy()
方法
该方法的签名如下:
java
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
参数说明:
src
: 源数组,数据从这个数组中复制。srcPos
: 源数组的起始位置(索引)。dest
: 目标数组,数据将复制到这个数组中。destPos
: 目标数组的起始位置(索引)。length
: 要复制的元素数量。
例子:
java
class ArrayCopyDemo {
public static void main(String[] args) {
// 原始数组
String[] copyFrom = {
"Affogato", "Americano", "Cappuccino", "Corretto", "Cortado",
"Doppio", "Espresso", "Frappucino", "Freddo", "Lungo", "Macchiato",
"Marocchino", "Ristretto" };
// 目标数组
String[] copyTo = new String[7];
// 使用 System.arraycopy() 方法复制数组的部分内容
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
// 打印目标数组的内容
for (String coffee : copyTo) {
System.out.print(coffee + " ");
}
}
}
解释:
- 我们声明了一个包含 13 种咖啡名字的数组
copyFrom
。 - 创建了一个长度为 7 的目标数组
copyTo
。 - 使用
System.arraycopy()
方法从copyFrom
数组的索引 2 开始,复制 7 个元素到copyTo
数组的索引 0 开始的位置。
输出:
java
Cappuccino Corretto Cortado Doppio Espresso Frappucino Freddo
注意事项:
- 数组长度 :确保目标数组足够大以容纳从源数组复制的元素。如果目标数组太小,将抛出
ArrayIndexOutOfBoundsException
。 - 偏移量 :
srcPos
和destPos
参数分别指定了从源数组和目标数组中开始复制的索引位置。如果起始位置超出了数组的有效范围,也会抛出异常。
总结:
System.arraycopy()
是一个非常高效的数组复制方法。它不仅可以复制整个数组,也能选择复制数组的一部分。通过适当的索引和长度设置,你可以精确控制复制的元素范围。