拷贝不可变数据类型,深浅拷贝都返回原对象本身,不可变数据类型包含可变数据类型时除外。
拷贝可变数据类型时,深拷贝递归复制返回一个新对象。浅拷贝原对象返回一个新对象,有子对象,则子对象返回子对象本身。
注意:
如果是返回对象本身,则地址值相同,且随原对象改变而改变。
不考虑内存地址,只考虑数据变化时:
深拷贝一个对象a,得到对象b。b不会随着a的变化而变化。
浅拷贝三种:
1.浅拷贝原对象a且不包含子对象的情况下得到对象b,b不会随着a的变化而变化。
2.浅拷贝原对象a有子对象且子对象是不可变数据类型时得到对象b,b不会随着a的变化而变化。
3.浅拷贝原对象a有子对象且子对象是可变数据类型时得到对象b,b的子对象会随着a的子对象变化而变化。
在不考虑内存地址变化的情况下,不用考虑不可变数据类型,因为他本身就不可变。