import java.util.Arrays;
//将数组arr的值拷贝给数组save
public class Test1 {
public static void main(String[] args) {
int[] arr = {1, 23, 32, 34, 454, 22, 2, 413};
int[] save = new int[8];
//正确写法
//methodx(save,arr);
//methody(save,arr);
int[] result = methodz(arr);
printArr(result);
//错误写法
//method1(save,arr);
//method2(save, arr);
//method3(save, arr);
//打印拷贝好的数组
// printArr(save);
}
private static void methodx(int[] save, int[] arr) {
for (int i = 0; i < arr.length; i++) {
save[i] = arr[i];
}
}
private static void methody(int[] save, int[] arr) {
System.arraycopy(arr, 0, save, 0, arr.length);
}
//和methodx,methody有些不同
private static int[] methodz(int[] arr) {
int[] save = arr.clone();
return save;
}
private static void method1(int[] save, int[] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < save.length; j++) {
save[j] = arr[i];
}
}
}
private static void method2(int[] save, int[] arr) {
for (int i = 0; i < arr.length; i++) {
Arrays.fill(save, arr[i]);
}
}
private static void method3(int[] save, int[] arr) {
for (int j : arr) {
Arrays.fill(save, j);
}
}
private static void printArr(int[] save) {
for (int i = 0; i < save.length; i++) {
System.out.print(save[i] + " ");
}
}
}
method1,method3,method3的输出
只拷贝了数组最后一个元素,其他的都被刷新了
methodx,methody,methodz的输出