Java 浅拷贝与深拷贝

浅拷贝

浅拷贝的对象, 对于基本数据类型, 拷贝值, 而引用变量和包装类型只拷贝内存地址. 改变其中一个引用变量内的属性会影响到另外一个对象.
Java中从Object中继承的clone()方法默认实现的是浅拷贝.

浅拷贝模型

深拷贝

深拷贝的对象, 所有引用变量都与原对象指向不同的内存地址, 但内容完全相同. 改变引用对象内容不影响另一个.

深拷贝模型

如何实现?

  • 将可拷贝对象实现接口Cloneable, 重写clone()接口
  • 浅拷贝对象, 直接调用super.clone()
  • 深拷贝对象, 需要我们自定义如何实现.
    比如Person里面有一个嵌套属性spouse, 则需要重新new一个Person类, 将旧对象spouse属性中的值赋予新spouse, 这样返回的spouse不会是同一个引用地址.

你可能感兴趣的:(Java 浅拷贝与深拷贝)