千锋教育2023版Java面试宝典Java面试200题(含美团、字节、阿里大厂真
2023-07-18 21:14 作者:hgypqghzbbww | 我要投稿

深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是在计算机科学中用于描述对象复制的概念。
浅拷贝是指创建一个新对象,并将原始对象的字段值复制到新对象中。如果字段是值类型(如基本数据类型),则直接复制字段的值;如果字段是引用类型,则复制字段的引用,也就是两个对象引用同一个内存地址。因此,对其中一个对象的字段进行修改,会影响到另一个对象。
深拷贝是指创建一个新对象,并将原始对象的字段值复制到新对象中。不同于浅拷贝,深拷贝会递归地复制引用类型字段所引用的对象,而不是共享引用。这意味着对其中一个对象的字段进行修改,不会影响到另一个对象。
实现深拷贝的方式有多种:
1. 逐个复制对象的字段,如果字段是引用类型,则递归地对该字段进行深拷贝。
2. 实现 `Cloneable` 接口,并重写 `clone()` 方法,在 `clone()` 方法中对引用类型的字段进行深拷贝。
3. 使用序列化和反序列化,将对象写入字节流,然后再从字节流中读取出来,这样会创建一个新的对象。
需要注意的是,如果对象中存在循环引用,即对象A引用了对象B,而对象B又引用了对象A,那么深拷贝可能会导致无限递归。因此,在进行深拷贝时需要特别注意处理循环引用的情况。