在java中,对象的拷贝分为浅拷贝和深拷贝两种。
浅拷贝:只是复制了对象的引用,两个对象会指向同一个内存地址,修改其中的一个对象的属性,另一个对象的属性也会跟着改变。
深拷贝:复制了对象的所有内容,包括对象内部的基本类型和其他引用类型对象,两个对象是独立的,互不影响。
深拷贝的实现方式:
1、实现Cloneable接口,并重写clone()方法。这种方式只适用于基本类型和String对象,对于其他对象需要进行深度复制。
2、使用序列化的方式。将对象序列化为字节流,再将字节流反序列化为一个新的对象,这样可以实现深度复制。
引用拷贝:是一种变量复制方式,它只是将变量的引用(内存地址)复制给了另一个变量,两个变量指向同一个内存地址,也就是说通过修改其中一个变量对象的属性,那么会影响到另一个引用对象。
画图解释: