java面试题网

普通会员

115

帖子

83

回复

169

积分

楼主
发表于 2019-09-26 14:51:00 | 查看: 5245| 回复: 0

为什么要用 clone? new 一个对象的过程和 clone 一个对象的过程区别?

为什么要用 clone?
在实际编程过程中,我们常常要遇到这种情况:有一个对象 A,在某一时刻 A 中已经包含了一些有效值,此时可
能会需要一个和A完全相同新对象B,并且此后对B 任何改动都不会影响到A中的值,也就是说,A与B是两个独立
的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需
求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段。

new 一个对象的过程和 clone 一个对象的过程区别
new操作符的本意是分配内存。程序执行到new操作符时,首先去看new操作符后面的类型,因为知道了类型,
才能知道要分配多大的内存空间。分配完内存之后,再调用构造函数,填充对象的各个域,这一步叫做对象的初始化,
感恩于心,回报于行。
构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这个对
象。
clone在第一步是和new相似的,都是分配内存,调用clone方法时,分配的内存和原对象(即调用clone方法
的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域,填充完成之后,clone方法返回,一个新的相同

的对象被创建,同样可以把这个新对象的引用发布到外部。 



文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1307_1_1.html


java面试题交流群:327440556

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018