对深拷贝与浅拷贝的理解-测试

一、通过例子引入

(1)赋值

直接用赋值的方式

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

内容相同

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

 

(2)使用clone()方法

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

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

3.测试

两个地址不相等  

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

说明发生了深拷贝!!!

小结:

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

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

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

特殊的是!下面的例子!

 

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

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

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

 

修改后:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值