日期:2014-05-20  浏览次数:20598 次

求问深层copy和浅层copy
看书遇到看到深层copy和浅层copy,接触到地址又是数值的。没看明白。哪位大哥用通俗点的语言给解释一下.谢谢!!!!!

------解决方案--------------------
比如你保存一个网页,网页中有图片
浅clone就是你只保存了网页内容和图片的链接
深clone就是你连图片也保存下来了
------解决方案--------------------
浅copy表示你只是copy了一个对象的内存空间,只是对这个对象进行了按位copy.
这样就有个问题,假如源对象有个Date类型的实例变量,这样,你的copy对象和源对象的Date变量指向了同一个地址,改变其中任何一个都会影响到另一个。
------解决方案--------------------
通俗一点的,仅供参考。
比如你朋友欠你两万块钱,你去讨。他给你一张有两万块钱的卡,告诉你密码,那么这是浅拷贝,如果他给你现金,那么就是深拷贝。
也就是说,如果你得到的只是你想要的东西的一个凭证,那么就是浅拷贝。为了得到你真正要得到的东西,你还必须通过这个凭证去取。你的朋友可能还有一张存折,他通过存折也可以把钱取出来。这样你的凭证拿到的东西可能并不一定和当初拿到的一模一样,别人也可以改变它。
如果你直接拿到了钱,那么就是深拷贝。这个时候你朋友出了偷窃和抢劫,没有办法再把这个钱怎么样。
------解决方案--------------------
daniel_kaka(卡卡):
Java里面的clone和C++的copy构造函数默认情况下都是浅copy,所以需要自己负责clone方法的实现,首先是调用super.clone()完成按位copy,再作其他的操作。