深拷贝和浅拷贝及实现

Posted twoheads

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深拷贝和浅拷贝及实现相关的知识,希望对你有一定的参考价值。

什么是浅拷贝和深拷贝

首先需要明白,浅拷贝和深拷贝都是针对一个已有对象的操作。那先来看看浅拷贝和深拷贝的概念。

在 Java 中,除了基本数据类型(元类型)之外,还存在 类的实例对象 这个引用数据类型。而一般使用 『 = 』号做赋值操作的时候。对于基本数据类型,实际上是拷贝的它的值,但是对于对象而言,其实赋值的只是这个对象的引用,将原对象的引用传递过去,他们实际上还是指向的同一个对象。

而浅拷贝和深拷贝就是在这个基础之上做的区分,如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行了引用的传递,而没有真实的创建一个新的对象,则认为是浅拷贝。反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,则认为是深拷贝。

所以到现在,就应该了解了,所谓的浅拷贝和深拷贝,只是在拷贝对象的时候,对 类的实例对象 这种引用数据类型的不同操作而已。

总结来说:

1、浅拷贝:对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝,此为浅拷贝。

技术分享图片

2、深拷贝:对基本数据类型进行值传递,对引用数据类型,创建一个新的对象,并复制其内容,此为深拷贝。

技术分享图片

以上是关于深拷贝和浅拷贝及实现的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript深拷贝和浅拷贝的总结(含义区别及实现)

浅谈深拷贝和浅拷贝及几种实现方法

如何实现数组深拷贝和浅拷贝?

JSON对象的深拷贝和浅拷贝

什么是深拷贝和浅拷贝以及如何实现深拷贝

深拷贝和浅拷贝的区别 & 如何实现深拷贝和浅拷贝