A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

能举例说一下吗

3 个回复

正序浏览
浅拷贝就是不考虑对象中的引用类型成员,只将该对象的内容全部拷贝一份,对于引用类型,拷贝其存储的值,即地址,如果值仍有地址,不会拷贝,只会指向地址,只考虑到第一层的引用地址为止。
深拷贝就是完完全全地拷贝一份。如果引用的值仍有地址,一直会拷贝地址。
:)

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
1.浅拷贝    DemoClass dclass3=dclass1.copy();      
复制dclass1的除引用成员外的所有成员。
即假设DemoClass类里有一个成员是    private AnotherClass aclass=new AnotherClass();      
执行浅拷贝时,dclass3的aclass成员还是引用的dclass1的aclass.
2,深拷贝  DemoClass dclass4=dclass1.deepcopy();      
dclass4会得到所有dclass1的引用成员和成员的副本。   
注意,自己写的类,深拷贝函数需要自己写的,你可能会用到MemberwiseClone()
回复 使用道具 举报
通俗一点的,仅供参考。
比如你朋友欠你两万块钱,你去讨。他给你一张有两万块钱的卡,告诉你密码,那么这是浅拷贝,如果他给你现金,那么就是深拷贝。
也就是说,如果你得到的只是你想要的东西的一个凭证,那么就是浅拷贝。为了得到你真正要得到的东西,你还必须通过这个凭证去取。你的朋友可能还有一张存折,他通过存折也可以把钱取出来。这样你的凭证拿到的东西可能并不一定和当初拿到的一模一样,别人也可以改变它。
如果你直接拿到了钱,那么就是深拷贝。这个时候你朋友出了偷窃和抢劫,没有办法再把这个钱怎么样。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马