一、通过例子引入

(1)赋值

直接用赋值的方式

返回true  说明两份有相同的内存地址

内容相同

则:它是发生了浅拷贝!!!

 

(2)使用clone()方法

1.首先对象实现Cloneable。注意。

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

3.测试

两个地址不相等  

前者对象未因后者对象的改变而改变-------互不影响-------不是引用!

说明发生了深拷贝!!!

小结:

如果一个被复制的属性都是基本类型,那么只需要实现当前类的cloneable机制就可以了,此为浅拷贝。

如果被复制对象的属性包含其他实体类对象引用,那么这些实体类对象都需要实现cloneable接口并覆盖clone()方法。

(3)拷贝对象里有其他对象的引用

特殊的是!下面的例子!

 

在User对象里增加一个引用对象 Score!

此种情况,则是因为:score未发生拷贝!         

深拷贝      =等价于=     每一层对象都进行浅拷贝  

 

修改后: