设计目的:用于产生一个和原对象A相同的对象B,且对B的改动不影响到A的值
new 一个对象的过程和 clone 一个对象的过程区别
new :1.按照对应的类型分配对应大小的内存空间;2.调用构造函数填充各个域;3.将该内存的地址赋值给对应的引用。
Clone():1.按照对应的类型分配对应大小的内存空间;2.使用原对象中对应的各个域填充新对象的域;3.将该内存的地址赋值给对应的引用。
clone 对象的使用复制对象和复制引用的区别
复制引用后,两个实质指向同一个内存地址,==比较为true;
复制对象后,他们指向不同的内存地址,==比较为false
深拷贝和浅拷贝
待拷贝的对象Person的成员变量Student s是引用数据类型时,对于s的拷贝如果和原对象指向同一个内存地址则成为浅拷贝,如果s的拷贝是指向一个新的内存区域则成为深拷贝。
clone 是浅拷贝的,对于引用数据类型的成员变量的拷贝是指向同一个地址
如何进行深拷贝:成员变量的引用数据类型均实现Cloneable接口,实现clone()
Clone()使用示例