深拷贝(deep copy)

在给变量赋值的时候,如果开辟一个新的内存空间来存放变量,称之为深拷贝,修改被深拷贝赋值的对象不会对被赋值的对象产生影响

浅拷贝(shallow copy)

在给变量赋值的时候,如果只是简单的将对象的引用赋值给变量,相当于两个对象名指向了同一个内存地址,两个变量名相当于同一个对象的不同名称,修改其中任何一个都会对另一个对象产生相同的影响

对于C/C++来说,几乎所有的赋值都默认的是深拷贝,但对于java,对象本身就是一个引用,因此默认的是浅拷贝
图片说明

在C/C++中默认的赋值方式为深拷贝,修改objB不会对objA产生影响

图片说明

在java中默认采用浅拷贝的形式,可以发现修改objB后,直接赋值的objA也被修改了,而开辟新空间的objC没有受到影响