Shallow Copy(浅拷贝):创建一个新的与原类相同的类,在拷贝过程中,类中的基本类型得到正真的复制,而类中的对象只是实现引用的拷贝。当我们在新的类中修改了其中的某个对象,这个对象在原始的类中也会得到反映。原因是我们修改的对象所指向的内存地址是相同的。
从图中可以看到,复制后的mainObj2中基本类型field2单独获得了一块内存区,而对象级别的ObjStr并没有正真的复制,内存指针指向的还是同一块区域。比如我们熟悉的HashMap,HashSet,ArrayList,LinkedList的clone都属于浅拷贝行为。
Deep Copy(深拷贝):深度拷贝不但实现了基本类型的复制,同时也实现了对象的复制,简单说就是从新用new操作符从新创建了一个一模一样的类。