什么是浅拷贝和深拷贝
在 JAVA 中除了 char、byte、short、int、long、float、double、boolean等基础类型之外,还有类实例对象的引用数据类型。
一般使用"="做赋值操作,对于基本数据类型,实际上是拷贝的它的值,对于对象而言,赋值的实际上是这个对象的引用,将源对象的引用传递过去,本质上还是指向同一个对象。
通常说的浅拷贝和深拷贝就是在这个基础上来做区分的。那么什么是深拷贝,什么是浅拷贝呢?
如果在拷贝这个对象的时候,只对基本数据类型进行了拷贝,而对引用数据类型只是进行引用的传递,而没有真实的创建一个新的对象,即为浅拷贝。
反之,在对引用数据类型进行拷贝的时候,创建了一个新的对象,并且复制其内的成员变量,即为深拷贝。
简单来说:
浅拷贝:针对基本数据类型进行值传递,针对引用类型进行引用传递的拷贝即为浅拷贝深拷贝:针对基本数据类型进行值传递,针对引用数据类型,先创建新的对象实例,并复制其内容,即为深拷贝。