package 数组;
import java.util.Arrays;
public class 数组复制五种方法 {
public static void main(String[] args) {
/**
* 方法一:效率最高,使用System.arraycopy();
* public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
* 参数:
* src - 源数组。
* srcPos - 源数组中的起始位置。
* dest - 目标数组。
* destPos - 目标数据中的起始位置。
* length - 要复制的数组元素的数量
* 复制后的结果: 1 2 3 4 0 0 0 0
*/
int[] a11 = { 1, 2, 3, 4 };
int[] a12 = new int[8];
System.arraycopy(a11, 0, a12, 0, a11.length);
System.out.print("方法一复制后的结果: ");
for (int a : a12) {
System.out.print(a + " ");
}
System.out.println();
/**
* 方法二:利用clone().
*/
int[] a21 = { 5, 6, 7, 8 };
int[] a22 = new int[8];
a22 = a21.clone();
System.out.print("方法二复制后的结果: ");
for (int a : a22) {
System.out.print(a + " ");
}
System.out.println();
/**
* 方法三:复制引用
* 复制引用:是指将某个对象的地址复制,所以复制后的对象副本的地址和源对象相同,这样,当改变副本的某个值后,源对象值也被改变;
* 复制对象:是将源对象整个复制,对象副本和源对象的地址并不相同,当改变副本的某个值后,源对象值不会改变;
*/
int[] a31 = { 2, 4, 6, 8 };
int[] a32 = a31;
System.out.print("方法三复制后的结果: ");
for (int a : a32) {
System.out.print(a + " ");
}
System.out.println();
/**
* 方法四:利用Array的静态方法copyOfRange(T[] original,int from,int to)
* 参数:
* original - 将要从其复制一个范围的数组
* from - 要复制的范围的初始索引(包括)
* to - 要复制的范围的最后索引(不包括)。(此索引可以位于数组范围之外)。
*
*/
int[] a41 = { 1, 3, 5, 7 };
int[] a42 = Arrays.copyOfRange(a41, 0, a41.length);
System.out.print("方法四复制后的结果: ");
for (int a : a42) {
System.out.print(a + " ");
}
System.out.println();
/**
* 方法五:利用for循环
*/
int[] a51 = { 9, 8, 7, 6 };
int[] a52 = new int[8];
for (int i = 0; i < a51.length; i++) {
a52[i] = a51[i];
}
System.out.print("方法五复制后的结果: ");
for (int a : a52) {
System.out.print(a + " ");
}
}
}