public class Demo {
public static void main(String[] args) {
//能实现理想效果
int[] a = new int[]{1,2,3,4};
int[] b = new int[4];
System.arraycopy(a, 0, b, 0, a.length);
b[0] = 0;
System.out.println(a[0]);//1
String[] aStr = new String[]{"a","b","c","b","e"};
String[] bStr = new String[5];
System.arraycopy(aStr, 0, bStr, 0, aStr.length);
bStr[0]="hello";
System.out.println(aStr[0]);//a
//不能达到想要的效果
A[] aClass = new A[]{new A(1),new A(2),new A(3),new A(4),new A(5)};
A[] bClass = new A[5];
//复制过去的是new A(int num)引用
System.arraycopy(aClass, 0, bClass, 0, a.length);
bClass[0].setNum(10);
System.out.println(aClass[0].getNum()); //10
}
}
public class A {
private int num;
public A(int num){
this.num = num;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
}
如果数组中存放的是对象的引用
那么使用java中的数组复制方法,可能达不到想要得效果