一、通过例子引入
(1)赋值

直接用赋值的方式
返回true 说明两份有相同的内存地址
内容相同
则:它是发生了浅拷贝!!!
(2)使用clone()方法
1.首先对象实现Cloneable。注意。


2.对象的成员中重写clone方法

3.测试

两个地址不相等
前者对象未因后者对象的改变而改变-------互不影响-------不是引用!
说明发生了深拷贝!!!
小结:
如果一个被复制的属性都是基本类型,那么只需要实现当前类的cloneable机制就可以了,此为浅拷贝。
如果被复制对象的属性包含其他实体类对象引用,那么这些实体类对象都需要实现cloneable接口并覆盖clone()方法。
(3)拷贝对象里有其他对象的引用

特殊的是!下面的例子!
在User对象里增加一个引用对象 Score!

此种情况,则是因为:score未发生拷贝!
深拷贝 =等价于= 每一层对象都进行浅拷贝
修改后:

本文通过实例深入解析了浅拷贝与深拷贝的区别。浅拷贝仅复制对象的第一层属性,若属性中包含引用类型,则仅复制引用。深拷贝则递归复制所有层级的对象属性,确保完全独立。当对象属性包含其他实体类对象引用时,需实现Cloneable接口并重写clone方法,以实现深拷贝。
86

被折叠的 条评论
为什么被折叠?



