社区
Java SE
帖子详情
关于clone方法
我为JAVA狂
2012-06-23 03:14:28
Date date1 = new Date();
Date date2 = (Date)(date1.clone());
print(date1 == date2);// false
print(date1.equals(date2));// true
书上介绍,在这里的复制是浅复制,就是如果域是基本类型的,它的值被复制。而如果域是对象,域的引用将被复制。
按照这个浅复制原则,这里的date2应该是复制了date1的引用。怎么 date1 == date2 是错的呢
...全文
116
4
打赏
收藏
关于clone方法
Date date1 = new Date(); Date date2 = (Date)(date1.clone()); print(date1 == date2);// false print(date1.equals(date2));// true 书上介绍,在这里的复制是浅复制,就是如果域是基本类型的,它的值被复制。而如果域是对象,域的引用将被复制。 按照这个浅复制原则,这里的date2应该是复制了date1的引用。怎么 date1 == date2 是错的呢
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我为JAVA狂
2012-06-23
打赏
举报
回复
[Quote=引用 3 楼 的回复:]
你这本书厉害了 两点都错
第1 Date是深克隆 第2 即使是浅克隆也不是引用被复制
把书名说出来 叫大家小心点 新手最怕被烂书引入歧途了
[/Quote]
额...是我理解错了
hippoppower
2012-06-23
打赏
举报
回复
你这本书厉害了 两点都错
第1 Date是深克隆 第2 即使是浅克隆也不是引用被复制
把书名说出来 叫大家小心点 新手最怕被烂书引入歧途了
qybao
2012-06-23
打赏
举报
回复
深拷贝还是浅拷贝要查看date1.clone()的源代码才知道
如果源代码是 return this 则属于前拷贝,如果是 return new Date(this.getTime()) 则属于深拷贝
现在手头没有源码查看不了
不过从LZ的例子来分析,应该属于深拷贝
Edward1688
2012-06-23
打赏
举报
回复
这就要看==和.equals()方法的区别了,==比较的是内存地址是否相同,而.equals()方法比较的是两个对象的值是否相同。
date1与date2是两个不同的对象,在内存中分配的空间不同,所以它们的内存地址不同,用==比较时返回的就是false了
Java中
clone
方法
详解
Java中
clone
方法
详解一、
clone
简介二、Java中对象的创建:new与
clone
创建对象的区别三、复制对象or复制引用:第一个例子(复制引用):第二个例子(复制对象):四、深拷贝 浅拷贝原理浅拷贝深拷贝 一、
clone
简介
clone
就是复制 , 在Java语言中,
clone
方法
被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新...
java的
clone
方法
_Java
clone
方法
详解及简单实例
Java
clone
方法
详解什么是"
clone
"?在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在 Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现
clone
()方...
Java —
clone
()
方法
Java中
clone
方法
的使用 1. 什么是
clone
在实际编程过程中,我们常常要遇到这种情况:有一个对象object1,在某一时刻object1中已经包含了一些有效值,此时可能会需要一个和object1完全相同新对象object2,并且此后对object2任何改动都不会影响到object1中的值。也就是说,object1与object2是两个独立的对象,但object2的初始值是由obje...
Java中的
clone
方法
分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,构造
方法
返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对象(当然,由于指令的重排序,发布对象可能在构造函数返回之前,详细看。都是分配内存,调用
clone
方法
时,分配的内存和源对象(即调用
clone
方法
的对象)相同,然后再使用源对象中对应的各个域,填充新对象的域, 填充完成之后,
clone
方法
返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。
Object类的
clone
方法
Object类的
clone
方法
Object是所有类的基类,当你没有显示extends一个父类时,编译期会自动为你加上一个Object类。 这是一个native
方法
,说明这个
方法
的实现不是在java中,而是由C/C++实现,并编译成.dll文件,由java调用。registerNatives主要是将C/C++的
方法
映射到java中的native
方法
,实现
方法
命名的解耦。了解即可,知道是注册,细...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章