深拷贝和浅拷贝?

2022-01-01 73 0

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

深拷贝:完全拷贝一个对象,拷贝被拷贝对象的成员变量的值,堆中的对象也会拷贝一份。

因此深拷贝是安全的,浅拷贝的话如果有引用类型,那么拷贝后对象,引用类型变量修改,会影响原对象。

浅拷贝如何实现呢?

Object 类提供的 clone()方法可以非常简单地实现对象的浅拷贝。

深拷贝如何实现呢?

重写克隆方法:重写克隆方法,引用类型变量单独克隆,这里可能会涉及多层递归。

序列化:可以先将原对象序列化,再反序列化成拷贝对象。

相关文章

hashCode 与 equals?
== 和 equals 的区别?
final、finally、finalize 的区别?
final 关键字有什么作用?
18.静态变量和实例变量的区别?静态方法、实例方法呢?
17.成员变量与局部变量的区别有哪些?

发布评论