黑马程序员技术交流社区

标题: 深层拷贝和浅层拷贝是什么?有什么区别 [打印本页]

作者: 一扇车门    时间: 2013-4-28 09:51
标题: 深层拷贝和浅层拷贝是什么?有什么区别
能举例说一下吗
作者: HM邱刚权    时间: 2013-4-28 10:33
通俗一点的,仅供参考。
比如你朋友欠你两万块钱,你去讨。他给你一张有两万块钱的卡,告诉你密码,那么这是浅拷贝,如果他给你现金,那么就是深拷贝。
也就是说,如果你得到的只是你想要的东西的一个凭证,那么就是浅拷贝。为了得到你真正要得到的东西,你还必须通过这个凭证去取。你的朋友可能还有一张存折,他通过存折也可以把钱取出来。这样你的凭证拿到的东西可能并不一定和当初拿到的一模一样,别人也可以改变它。
如果你直接拿到了钱,那么就是深拷贝。这个时候你朋友出了偷窃和抢劫,没有办法再把这个钱怎么样。
作者: 袁振龙    时间: 2013-4-28 10:44
1.浅拷贝    DemoClass dclass3=dclass1.copy();      
复制dclass1的除引用成员外的所有成员。
即假设DemoClass类里有一个成员是    private AnotherClass aclass=new AnotherClass();      
执行浅拷贝时,dclass3的aclass成员还是引用的dclass1的aclass.
2,深拷贝  DemoClass dclass4=dclass1.deepcopy();      
dclass4会得到所有dclass1的引用成员和成员的副本。   
注意,自己写的类,深拷贝函数需要自己写的,你可能会用到MemberwiseClone()
作者: 陈晖    时间: 2013-4-28 14:14
浅拷贝就是不考虑对象中的引用类型成员,只将该对象的内容全部拷贝一份,对于引用类型,拷贝其存储的值,即地址,如果值仍有地址,不会拷贝,只会指向地址,只考虑到第一层的引用地址为止。
深拷贝就是完完全全地拷贝一份。如果引用的值仍有地址,一直会拷贝地址。
:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2