对于引用数据类型的成员变量,浅复制会使两个变量指向同一块内存,对其中的一个进行修改,另一个也会相应发生改变。
深复制是将对象的值和内容复制,创建新的内存给新的对象,对其中的一个对象修改不会影响另一个对象。
System.arraycopy()方法是一种深复制方法。
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从 src 引用的源数组到 dest 引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于 length 参数。源数组中位置在 srcPos 到 srcPos+length-1 之间的组件被分别复制到目标数组中的 destPos 到 destPos+length-1 位置。