浅拷贝

理解:会在堆上在创建一个对象,如果对象内部的属性是引用类型,那么clone后的对象与原对象的属性会共享同一个引用类型

创建两个类Address和Person,他们分别都实现了Cloneable接口,重写clone方法,其中Person的内部属性是引用类型的Address

Image
Image

编写测试类,查看clone前后对象的Address是否指向同一个地址

Image
总结:浅拷贝后的对象内部引用类型的属性会共享

深拷贝

理解:会在堆上创建一个对象,但是对比与浅拷贝,他不会共享内部属性是引用类型的,而是创建新的引用类型属性

在浅拷贝的代码基础上,修改Person类的Clone方法

Image

编写测试类,查看clone前后对象的Address是否指向同一个地址

Image
总结:深拷贝是将原来的对象全部复制一份到堆内存中

引用拷贝

理解:不同的引用指向同一个对象

一张图来描述浅拷贝、深拷贝、引用拷贝

Image