网上铺天盖地,有那么多写浅克隆和深克隆区别的。小妹我自己来个精辟的总结吧(也不知道对不对呢
浅克隆:传引用
深克隆:传值
下面上图,进行具体说明,内容有点黄哦
浅克隆示意图
:
浅克隆的几点说明:
- 对象:“酒店的房间”。
- 引用:“钥匙”
- 默认情况,一个房间配一把钥匙
- 进行浅克隆之后,其实是配了多把相同的钥匙!!!
- 这些钥匙打开的,是同一个“酒店的房间”。
- 此时
- 张三拿着第一把钥匙,进了房间,给“免费的套套”用完了
- 之后李四,拿着第二把钥匙,进了房间之后,再找套套的时候,发现套套已经用完的了。。。
- 李四一气之下,给床整湿了,
- 最后王五拿着第三把钥匙,进房间之后,发现,床也湿了,套套也用完了
- 哈哈,我解释的通俗易懂吧~~~~~~~
深克隆示意图:
深克隆的几点说明:
- 对象:“酒店的房间”。
- 引用:“钥匙”
- 默认情况,一个房间配一把钥匙
- 进行深克隆之后,其实是酒店新建了多个相同的房间而已!!!!!
- 这些房间配备都是一样的:比如房间的面积都相同,床的大小头相同,床的品牌都一样,床的摆放位置都朝南,等等(酒店的标准间嘛)
- 但是这些房间的门牌号不一样(201,202,203),201屋里床和202屋里绝对不是同一张床哦!
- 此时
- 张三拿着201钥匙,进了房间(201),给“免费的套套”用完了
- 李四,拿着202钥匙,进了房间(202)之后,当然202室里的套套还在哦
- 如果李四,给床整湿了,那也是202的床湿了
- 王五,拿着203钥匙,进了房间(203)之后,就会发现,床也没湿了,套套也在
- 哈哈,我解释的通俗易懂吧~~~~~~~
好了,java对象的深克隆和浅克隆的区别,到此解释完毕,通俗易懂,不要喷小妹我哦
。