克隆问题之浅深克隆?谁能找出字母b为什么不见了? 本帖最后由 mingyunzhidian 于 2012-07-17 09:10:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这里的克隆是浅克隆 只复制当前对象 它里面的对象的成员变量将不复制出单独的一份 而是指向你原来的对象的成员变量的对象 我说的你明白吗?然而你执行了s的increment 他把s的next 和next的next都+1了 所以s2的next与next的next都+1了也就是bcde 变成了cdef 然后s2没执行increment所以他的a还是a 你打印s2 就变成了打印a与s的next 还有s的next的next 变成了acdef 而s的变化你应该知道是为什么 所以不多说了 叙述的有些混乱 凑合看吧 说的不对的 见谅 class Int { int j; // Automatically duplicated public Int(int i) { j=i; } public String toString() { return Integer.toString(j); } public static void main(String[] args) { Int2 x = new Int2(10); x.k=new Int(10); Int2 x2 = (Int2) x.clone(); x2.increment(); x2.k=new Int(99); System.out.println("x.k = " + x.k + ", x2.k = " + x2.k); }}为什么这个里x.k与x2.k的值不一样,不是一个对象吗? 创建maven项目失败 myeclipse8.5如何修改调试浏览器 如何从一组数中找出某些数使得他们的和等于给定的某个值 关于struts所引用的包 struts远程调用的问题 spring2应用程序在JRun4下面无法正常运行的问题 Struts中<action-mapping>的配置问题 resin和iis集成的问题 struts问题 抓狂了,Hibernate的外键关联查询 request获取当前页面url的问题,求高手指点! MyEclipse总是报内存不足。
你这里的克隆是浅克隆 只复制当前对象 它里面的对象的成员变量将不复制出单独的一份 而是指向你原来的对象的成员变量的对象 我说的你明白吗?然而你执行了s的increment 他把s的next 和next的next都+1了 所以s2的next与next的next都+1了也就是bcde 变成了cdef 然后s2没执行increment所以他的a还是a 你打印s2 就变成了打印a与s的next 还有s的next的next 变成了acdef 而s的变化你应该知道是为什么 所以不多说了 叙述的有些混乱 凑合看吧 说的不对的 见谅
int j; // Automatically duplicated
public Int(int i) {
j=i;
}
public String toString() {
return Integer.toString(j);
}
public static void main(String[] args) {
Int2 x = new Int2(10);
x.k=new Int(10);
Int2 x2 = (Int2) x.clone();
x2.increment();
x2.k=new Int(99);
System.out.println("x.k = " + x.k + ", x2.k = " + x2.k);
}
}
为什么这个里x.k与x2.k的值不一样,不是一个对象吗?