```public static void testSystemArraycopy2(){
Person[] arr1 = {new Person("A"),new Person("B"),new Person("C")};
Person[] arr2 = new Person[3];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
arr2[2].setName("CCCCC");
for (int i = 0; i < arr2.length; i++) {
System.out.print(arr2[i].getName() + " ");
}
System.out.println(arr1 == arr2);
for (int i = 0; i < arr1.length; i++) {
System.out.print(arr1[i].getName() + " ");
}
}
----->控制台:
A B CCCCC false
A B CCCCC
两个数组的地址是的确不等。(疑:如果数组比较地址也是用‘==’来比较的话)
如果是基本类型的数组,我做了实验,的确是深拷贝;但对于引用数组,当我用System.arraycopy拷贝之后,我改变新数组某一元素的属性,却发现旧数组对应元素的属性也发生了同样改变。
以上情况让我十分困惑,既然复制之后的数组的内存地址不同,那么我改变一个内存块中的信息就不会影响另一个内存块的信息,可是为什么它却随之改变呢?
所以就有了第一句的疑惑。恳请大神不吝指点。