原理图

image.png

浅拷贝

拷贝的过程中,会先创建一个新的对象,用来保存要拷贝的对象的数据。

浅拷贝步骤

(1)创建一个新的对象(A对象的复制品)
(2)新对象(A对象的复制品)拷贝要被拷贝的对象(A对象),但是只是拷贝要被拷贝的对象的最外层对象(A对象本身)。被拷贝的对象(A对象)中内部其他对象(A1对象)不会被拷贝到新的对象(A对象的复制品)内部(A对象的复制品的A1对象),而是让新的对象(A对象的复制品)内部相应的部分(A对象的复制品中的A1对象)指向被拷贝的对象(A对象)内部(引用A对象内部的A1对象)。
(3)拷贝完毕。新对象中外层对象(本身)基本类型属性不受影响,但引用类型(内部对象)会受被拷贝对象的影响。即新对象的内部对象和被拷贝对象的内部对象都指向同一块内存。

深拷贝

拷贝的过程中,会先创建一个新的对象,用来保存要拷贝的对象的数据。

深拷贝步骤

(1)创建一个新的对象(A对象的复制品),还会创建一个内部对象(A对象的复制品中的A1对象复制品)
(2)新对象(A对象的复制品)拷贝要被拷贝的对象(A对象),同时也拷贝其内部对象。
(3)拷贝完毕。如此一来,新对象是一个完全新的独立的对象,不受被拷贝对象的影响。