java代码详细分析浅复制与深复

1.浅复制与深复制概念

浅复制(浅克隆)
被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。

深复制(深克隆)
被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的那些被引用的对象。换言之,深复制把要复制的对象所引用的对象都复制了一遍。

2.为什么要克隆

2.1一般是赋值

地址空间指向同一地方。一个两都会改变。
java代码详细分析浅复制与深复

2.2克隆

使数值相同,地址空间不同,多一个对象
java代码详细分析浅复制与深复

2.3克隆好处

我们要对一个对象去测试时候,就可以去克隆一个新的对象。也可以做备份的功能

3.浅克隆的使用

java代码详细分析浅复制与深复

java代码详细分析浅复制与深复

4.深克隆的使用

和浅克隆的区别是,深克隆要克隆的对象有对象属性。如
java代码详细分析浅复制与深复
所以我们要去克隆对象里面对象属性。

4.1 代码展示

java代码详细分析浅复制与深复
java代码详细分析浅复制与深复
java代码详细分析浅复制与深复

5.深克隆小坑或小诀窍

如果没有在对象中克隆里面的对象,则克隆的对象里面的对象是相同的。(地址)
java代码详细分析浅复制与深复
一般我们要的效果是:
java代码详细分析浅复制与深复

5.1 深克隆小坑或小诀窍代码展示

java代码详细分析浅复制与深复
java代码详细分析浅复制与深复
java代码详细分析浅复制与深复

6.小结

希望大家有什么排版不好,多多指教。