深拷贝、浅拷贝和引用拷贝
深拷贝和浅拷贝的区别
- 浅拷贝:对于对象内的引用数据类型,浅拷贝会直接复制其对象的地址,也就是拷贝对象和原对象公用一个内部对象。
- 深拷贝:会完全复制整个对象,包括对象所包含的内部对象,都是新创建的对象。
浅拷贝
浅拷贝的示例代码如下,我们这里实现了 Cloneable
接口,并重写了 clone()
方法。
clone()
方法的实现很简单,直接调用的是父类 Object
的 clone()
方法。
1 | public class Address implements Cloneable{ |
测试:
1 | Person person1 = new Person(new Address("武汉")); |
从输出结构就可以看出, person1
的克隆对象和 person1
使用的仍然是同一个 Address
对象。