java中的clone()方法的研究---(2)浅克隆和深克隆

时间:2022-12-06 10:59:11


网上铺天盖地,有那么多写浅克隆和深克隆区别的。小妹我自己来个精辟的总结吧(也不知道对不对呢


浅克隆:传引用


深克隆:传值


下面上图,进行具体说明,内容有点黄哦



浅克隆示意图



java中的clone()方法的研究---(2)浅克隆和深克隆



浅克隆的几点说明:


  • 对象:“酒店的房间”。
  • 引用:“钥匙”
  • 默认情况,一个房间配一把钥匙

  • 进行浅克隆之后,其实是配了多把相同的钥匙!!!
  • 这些钥匙打开的,是同一个“酒店的房间”。

  • 此时
  • 张三拿着第一把钥匙,进了房间,给“免费的套套”用完了
  • 之后李四,拿着第二把钥匙,进了房间之后,再找套套的时候,发现套套已经用完的了。。。
  • 李四一气之下,给床整湿了,
  • 最后王五拿着第三把钥匙,进房间之后,发现,床也湿了,套套也用完了
  • 哈哈,我解释的通俗易懂吧~~~~~~~





深克隆示意图:




java中的clone()方法的研究---(2)浅克隆和深克隆






深克隆的几点说明:


  • 对象:“酒店的房间”。
  • 引用:“钥匙”
  • 默认情况,一个房间配一把钥匙


  • 进行深克隆之后,其实是酒店新建了多个相同的房间而已!!!!!
  • 这些房间配备都是一样的:比如房间的面积都相同,床的大小头相同,床的品牌都一样,床的摆放位置都朝南,等等(酒店的标准间嘛)
  • 但是这些房间的门牌号不一样(201,202,203),201屋里床和202屋里绝对不是同一张床哦!

  • 此时
  • 张三拿着201钥匙,进了房间(201),给“免费的套套”用完了
  • 李四,拿着202钥匙,进了房间(202)之后,当然202室里的套套还在哦
  • 如果李四,给床整湿了,那也是202的床湿了
  • 王五,拿着203钥匙,进了房间(203)之后,就会发现,床也没湿了,套套也在
  • 哈哈,我解释的通俗易懂吧~~~~~~~



好了,java对象的深克隆和浅克隆的区别,到此解释完毕,通俗易懂,不要喷小妹我哦