java基础之“深复制和浅复制的区别”

一、浅复制

被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都任然指向原来的对象。

二、深复制

深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用对象

三、举例

产品类中有个产品明细对象,当我这里对产品类进行浅拷贝的时候,对应的产品明细对象任然指向原来的对象,地址值啥的未改变

这样就会照成,当我修改浅拷贝的产品明细对象时,他不会改变,他这里的值任然是指像原来的对象

而如果是深拷贝,当在修改后,他是随着变化而变化的,因为他这里是新的对象

可以参考:设计模式之“原型模式(ProtoType)”

 

四、注意

  1. 浅复制不能复制对象
  2. 深复制要注意对象的层次,就比如:我产品下有产品明细,产品明细下有供应商明细,供应商明细有账号明细.....等等的套娃下去,就要小心处理了,当心出现循环引用的问题了(比较复杂了,要细心研究)
  3. 但如果只是一层的话问题就不会很大

 

posted @ 2022-07-28 15:17  骚哥  阅读(323)  评论(0编辑  收藏  举报