java基础之“深复制和浅复制的区别”
一、浅复制
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都任然指向原来的对象。
二、深复制
深复制把引用对象的变量指向复制过的新对象,而不是原有的被引用对象
三、举例
产品类中有个产品明细对象,当我这里对产品类进行浅拷贝的时候,对应的产品明细对象任然指向原来的对象,地址值啥的未改变
这样就会照成,当我修改浅拷贝的产品明细对象时,他不会改变,他这里的值任然是指像原来的对象
而如果是深拷贝,当在修改后,他是随着变化而变化的,因为他这里是新的对象
四、注意
- 浅复制不能复制对象
- 深复制要注意对象的层次,就比如:我产品下有产品明细,产品明细下有供应商明细,供应商明细有账号明细.....等等的套娃下去,就要小心处理了,当心出现循环引用的问题了(比较复杂了,要细心研究)
- 但如果只是一层的话问题就不会很大
* 博客文章部分截图及内容来自于学习的书本及相应培训课程,仅做学习讨论之用,不做商业用途。
* 如有侵权,马上联系我,我立马删除对应链接。
* 备注:王子威
* 我的网易邮箱:wzw_1314_520@163.com