286 字
1 分钟
深拷贝和浅拷贝

深拷贝和浅拷贝?#

  • 浅拷贝:仅拷贝被拷贝对象的成员变量的值,也就是基本数据类型变量的值,和引用数据类型变量的地址值,而对于引用类型变量指向的堆中的对象不会拷贝。
  • 深拷贝:完全拷贝一个对象,拷贝被拷贝对象的成员变量的值,堆中的对象也会拷贝一份。

例如现在有一个 order 对象,里面有一个 products 列表,它的浅拷贝和深拷贝的示意图: 浅拷贝和深拷贝示意图 因此深拷贝是安全的,浅拷贝的话如果有引用类型,那么拷贝后对象,引用类型变量修改,会影响原对象。 浅拷贝如何实现呢? Object 类提供的 clone()方法可以非常简单地实现对象的浅拷贝。 深拷贝如何实现呢?

  • 重写克隆方法:重写克隆方法,引用类型变量单独克隆,这里可能会涉及多层递归。
  • 序列化:可以先将原对象序列化,再反序列化成拷贝对象。
深拷贝和浅拷贝
作者
强人自传
发布于
2025-05-25
许可协议
CC BY-NC-SA 4.0