深拷贝浅拷贝,谁能说说这两个copy的区别,尽量说深一点,最好自己试过 ArrayList list2 = new ArrayList(Arrays.asList(new Object[list1.size()]));ArrayList list3 = new ArrayList(list1); 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 深拷贝与浅拷贝浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制。深拷贝:对象,对象内部的引用均复制。注:克隆属于浅拷贝理解:一个学生对象(s1)拥有一个教授对象,和自己的名字,对这个学生对象进行克隆后,产生一个新的学生对象(s2)。改变s2的名字,不会影响到s1的名字。但是如果改变s2的教授的属性,则影响到s1的教授属性,因为教授对象是引用类型,没有被拷贝。那么怎么做到克隆学生对象的时候连教授对象也克隆呢(也就是深拷贝)?如下教授类也实现Cloneable接口,在克隆学生的方法中如下public Object clone(){ Student o=null; try{ o=(Student)super.clone(); } catch(CloneNotSupportedException e) { System.out.println(e.toString()); } o.p=(Professor)p.clone(); //重点就在这里 return o; } 这个是C++的名词,在Java里面基本是不适用的。深拷贝,浅拷贝是为了处理C++里面不同对象持有成员的所有权问题,而Java是gc的,同样场景下根本就不需要深拷贝了。 我晕,我发的帖就没人回答?也是深浅拷贝问题。http://topic.csdn.net/u/20110515/11/7ac3e561-6f46-478a-bdbb-1f1615582ac2.html 我之前总结的,lz可以看一下,关于Object.clone()的http://blog.csdn.net/chosen0ne/archive/2011/03/30/6290186.aspx 怎么不回答我发的例子,说说这两个赋值的区别,顺便捎带把深浅copy说说 对于引用类型的拷贝,例如Date,注意需要创建新的对象;对于基本类型,例如String,int,直接复制即可 本帖最后由 AWUSOFT 于 2011-05-17 23:05:28 编辑 关于Map迭代的几种做法,看看大家都喜欢用哪一种方式呢? 编一程序实现个人通讯录管理 类 Hello 是公共的,应在名为 Hello.java 的文件中声明 请教一个简单的多线程问题 请帮助看一下。。。谢谢 手机程序开发中平台问题?不是难题,参与有分 初级问题,高手解答 applet如何访问服务器端文件(.txt文件即可,包括写入和读出)? uml 送分: 关于rose Java中字符串相等的判断! 线程问题--五子棋游戏中的线程 求解网页抓取和做表格问题
浅拷贝:只复制一个对象,对象内部存在的指向其他对象数组或者引用则不复制。
深拷贝:对象,对象内部的引用均复制。
注:克隆属于浅拷贝
理解:一个学生对象(s1)拥有一个教授对象,和自己的名字,对这个学生对象进行克隆后,产生一个新的学生对象(s2)。改变s2的名字,不会影响到s1的名字。但是如果改变s2的教授的属性,则影响到s1的教授属性,因为教授对象是引用类型,没有被拷贝。那么怎么做到克隆学生对象的时候连教授对象也克隆呢(也就是深拷贝)?如下
教授类也实现Cloneable接口,在克隆学生的方法中如下
public Object clone(){
Student o=null;
try{
o=(Student)super.clone();
}
catch(CloneNotSupportedException e) {
System.out.println(e.toString());
}
o.p=(Professor)p.clone(); //重点就在这里
return o;
}
http://topic.csdn.net/u/20110515/11/7ac3e561-6f46-478a-bdbb-1f1615582ac2.html
http://blog.csdn.net/chosen0ne/archive/2011/03/30/6290186.aspx