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

一、浅复制

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

二、深复制

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

三、举例

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

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

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

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

四、注意

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值