黑马程序员技术交流社区
标题:
深层拷贝和浅层拷贝是什么?有什么区别
[打印本页]
作者:
一扇车门
时间:
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