JAVA 中浅拷贝与深拷贝有什么区别? JAVA 中浅拷贝与深拷贝有什么区别?具体该怎么处理 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对类以及需要复制的成员对象实现Clonable接口,或者用序列化 可以深拷贝否则只能浅拷贝了吧 浅拷贝就是仅仅对成员的引用进行拷贝。深拷贝就是对成员再次进行浅拷贝比如:class A{private String str1;public getStr1{ return str1;}...}class B{ private String str2; private A a; public getStr1{ return str1; } public getA{ return a; } ...}B obj1 = new B();obj1.setStr2 = "123";obj1.getA.setStr1 = "456";B obj2 = obj1.浅拷贝.obj2.getA.setStr1 = "789";此时obj1.getA.getstr1 = "789".//因为引用的是同一对象如果是深拷贝obj2.getA.setStr1 = "789";此时obj1.getA.getstr1 = "456".//因为此时obj2中a为新对象. 只要你调用super.clone()就能实现浅拷贝。但如果你copy的对象中还包含其他的对象,这个时候浅拷贝就不行了。只能重写clone()方法,自己写代码实行了 老师给你们留了作业,你们班只有小A一个人会写,其他人都需要copy他的作业。如果你们都是通过浅拷贝来完成作业,那么就相当与“在你需要的时候,小A会把作业借给你”。例如,老师对小B说“去把你的作业拿来给我看看”,小B赶快找小A借作业给老师看。老师又要看小C的作业,小C也只能找小A借过来应付老师。总之老师如果一个一个的检查作业,你们都能应付,因为你们只有一本作业互相借着看一下就OK了。如果老师说“全班把作业一起交上来”,那你们就完蛋了。深拷贝就是每个人都实实在在的抄了一份作业,每个人的作业都是自己抄来的,所以老师收全班的作业你们也不怕,要多少本就给他多少本,呵呵。 andycpp(幻瞳) 的比喻非常好 andycpp(幻瞳) 的比喻非常好我也赞同!!! socket报SocketTimeoutException Email乱码问题,烦的要死,请大家棒棒忙,指点一二 有java gui的基础ppt没, 关于this的一些疑问 谁有java Swing教程, MYSQL怎么在他的网站上下载啊?在线等,急。 执行字符串表达式 【100分一个小问题!!!!!!!!!!!!!!!!!!】 主题:java的"可执行文件" 送分0 问个在struts框架中request取值的问题 如何使关闭按钮灰化!!!
否则只能浅拷贝了吧
比如:
class A{
private String str1;public getStr1{
return str1;
}
...
}class B{
private String str2;
private A a; public getStr1{
return str1;
} public getA{
return a;
}
...
}B obj1 = new B();
obj1.setStr2 = "123";
obj1.getA.setStr1 = "456";B obj2 = obj1.浅拷贝.
obj2.getA.setStr1 = "789";
此时obj1.getA.getstr1 = "789".//因为引用的是同一对象
如果是深拷贝
obj2.getA.setStr1 = "789";
此时obj1.getA.getstr1 = "456".//因为此时obj2中a为新对象.
但如果你copy的对象中还包含其他的对象,这个时候浅拷贝就不行了。
只能重写clone()方法,自己写代码实行了
例如,老师对小B说“去把你的作业拿来给我看看”,小B赶快找小A借作业给老师看。老师又要看小C的作业,小C也只能找小A借过来应付老师。总之老师如果一个一个的检查作业,你们都能应付,因为你们只有一本作业互相借着看一下就OK了。如果老师说“全班把作业一起交上来”,那你们就完蛋了。深拷贝就是每个人都实实在在的抄了一份作业,每个人的作业都是自己抄来的,所以老师收全班的作业你们也不怕,要多少本就给他多少本,呵呵。
我也赞同!!!