一、浅拷贝
什么是浅拷贝?
Object类是Java语言所有类的祖先类,所有类皆继承于他。Object类提供了clone方法,为此所有的Java类都可以支持该方法。但是,该方法应用在特定场景下可能是个坑。
在拷贝过程中其对象内部的基本类型与String类型的值会被直接拷贝,但是对于数组、对象引用只是拷贝地址,即还是指向原生对象的数组或对象引用,原生对象与拷贝对象这两个对象共享了这些数组与对象引用,一个改变了另外一个也随之而改变。
上述clone的过程与特性,我们称之为“浅拷贝”。这是需要在实际编程过程中特别注意的。虽然很多时候“浅拷贝”可以解决业务问题,但是更多时候会留下隐患,需要留意提防。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、深拷贝
什么是深拷贝?
深拷贝解决了原生对象与拷贝对象共用数组和对象引用的问题。
怎样实现深拷贝?
在调用了clone()方法之后,在存在有共用关系的数组和对象的地方,创建新的内容相同的数组和对象来进行覆盖,来切断与原对象的关联。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------