java 类对象的复制必须要用到clone()方法吗? 假如定义了一个Test类,里面只有一个name属性。 Test test1=new Test(“txg”); Test test2=test1; 这样test2也会得到test1的name值,那java为什么还要有clone()呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你这个不是复制对象,你这是复制了一个引用。Test test1=new Test(“txg”);有几个对象??一个是test1引用, 另一个是:new Test(“txg”),后者才是真正的对象。 现在test1指向后面这个对象,你这么操作,只是定义了一个test2也指向这个对象,所以内存中还是只有一个对象。 实现cloneable接口以后,你用clone方法,得到的是内存中有两个完全不同的对象。。只是属性的值相同罢了。如果你不信: 你用你的程序。。用test2修改,name值,然后test1打印一下name值。。发现是不是也变了。但如果你用clone方法则不会。拷贝分为:深拷贝和浅拷贝。 自己google去查吧。 假如你直接引用 对象当你改变test2 中的数据 test1会随之改变 因为你实际是操作了一块内存变量而我们实际上有时候不希望他们互相影响所以复制了一份数据 重新分配内存不过对于大数据量 千万有谨慎使用 有可能会内存不够 明白了,哈哈http://blog.csdn.net/txg703003659/article/details/6622885 http://blog.csdn.net/txg703003659/article/details/6622885 java中socket编程自定义tcp数据包结构等 长期存储数据用什么好?数据不多, Java Applet异步调用问题 Java的各种数据流该如何使用 求教:仍然是一个关于JButton的问题 问个关于java图形动画编程的问题 我在JScrollPane 中加入了JTextArea ,但是没有出现滚动条呢? 一个简单问题 编译包时出错!!!!!!!! 如何制作进度条? Subversion Edge在windows环境下不支持中文目录的访问规则权限设置 使用while循环语句计算1+1/2!+1/3!+...1/20!之和,请看看程序是否对。
Test test1=new Test(“txg”);有几个对象??一个是test1引用, 另一个是:new Test(“txg”),后者才是真正的对象。 现在test1指向后面这个对象,你这么操作,只是定义了一个test2也指向这个对象,所以内存中还是只有一个对象。
如果你不信: 你用你的程序。。
用test2修改,name值,然后test1打印一下name值。。发现是不是也变了。但如果你用clone方法则不会。拷贝分为:深拷贝和浅拷贝。 自己google去查吧。
当你改变test2 中的数据 test1会随之改变 因为你实际是操作了一块内存变量
而我们实际上有时候不希望他们互相影响
所以复制了一份数据 重新分配内存
不过对于大数据量 千万有谨慎使用 有可能会内存不够
http://blog.csdn.net/txg703003659/article/details/6622885