new操作符的本意是分配内存。程序执行到new操作符时,首先去看new操作符后面的类型,因为知道了
类型,才能给它分配多大的内存空间。分配完内存后就调用构造函数进行填充对象的各个域,这一步
叫对象的初始化,构造方法返回后,一个对象创建完毕,就可以把他的引用(地址)发布到外部,在
外部就可以使用这个引用操纵这个对象。
clone在第一步是和new相似的,都是分配内存,调用clone方法时,分配的内存和原对象(调用clone
方法的对象)相同,然后再使用原对象中对应的各个域,填充新对象的域,填充完成之后,clone方法
返回,一个新的相同的对象被创建,同样可以把这个新对象的引用发布到外部。
深拷贝对象必须要实现Cloneable接口,实现clone方法,且方法内部要把对象引用的其它对象也要clone
一份,这就要求这个被引用的对象必须也要实现Cloneable接口并实现clone方法
参照来源于《黑马程序员面试宝典(java)》