- 方式1:System.arraycopy()效率高
- 方式2:通过Arrays工具类的copyOf()和copyOfRange()
例题1:复制 1,3,5,7,9,11,13,15,17,19
解:定义一个数组numbers,把要复制的数据存入,再定义一个目标数组target,它的长度是nulbers的长度;使用System.arraycopy(),它的效率高。
System.arraycopy(原数组,开始复制的位置,目标数组,开始存储的位置,复制的长度)
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//数组复制
//方式1:System.arraycopy()效率高
int[] numbers = {1,3,5,7,9,11,13,15,17,19};
int[] target = new int[numbers.length];
System.arraycopy(numbers, 0, target, 0, numbers.length);
//输出数组内容
System.out.println(Arrays.toString(numbers));
System.out.println(Arrays.toString(target));
//输出数组的类型和内存地址
System.out.println(numbers);
System.out.println(target);
}
}
运行结果:
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
[I@5e265ba4
[I@156643d4
例题2: 定义一组数组,复制前三个元素,复制所有元素,复制指定区间元素,复制后5个元素
解:使用copyOf()和copyOfRange()对数组进行复制
- 复制前三个元素:从下标0开始复制,复制前三个元素
- 复制所有元素:从下标0开始复制,复制所有元素
- 复制指定区间元素:从下标1开始复制,复制下标5之前的元素
- 复制后5个元素:指定下标,复制到数组末尾
import java.util.Arrays;
public class Test {
public static void main(String[] args) {
//数组复制
//方式2:通过Arrays工具类的copyOf()和copyOfRange()
int[] numbers = {1,3,5,7,9,11,13,15,17,19};
System.out.println("原数组内容:"+Arrays.toString(numbers));
//复制前三个元素:
int[] arr1 = Arrays.copyOf(numbers, 3);
System.out.println("前3个元素:"+Arrays.toString(arr1));
//复制所有元素:
int[] arr2 = Arrays.copyOf(numbers, numbers.length);
System.out.println("所有的元素:"+Arrays.toString(arr2));
//复制指定区间元素:
int[] arr3 = Arrays.copyOfRange(numbers, 1, 5);
System.out.println("指定区间元素:"+Arrays.toString(arr3));
//复制后5个元素:
int[] arr4 = Arrays.copyOfRange(numbers, numbers.length-5, numbers.length);
System.out.println("后5个元素:"+Arrays.toString(arr4));
System.out.println(numbers);
System.out.println(arr1);
System.out.println(arr2);
System.out.println(arr3);
}
}
运行结果:
原数组内容:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
前3个元素:[1, 3, 5]
所有的元素:[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
指定区间元素:[3, 5, 7, 9]
后5个元素:[11, 13, 15, 17, 19]
[I@5e265ba4
[I@156643d4
[I@123a439b
[I@7de26db8