深浅拷贝为引用数据类型(复杂数据类型)的赋值操作!
浅拷贝:将一个引用数据类型的地址,赋值给另一个变量存储,没有进行任何处理称为浅拷贝。
int1 变量中存储的是数组的 内存地址;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322153737740-1793011781.png)
将 int1 存储的内存地址,赋值给 int2,两个变量存储的是相同的内存地址;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322153825662-1165066964.png)
因为int1和int2,同时存储的是相同的数据与内存地址,操作的也是同一个数组,
所以,int1,操作数组改变,int2也会改变;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322154203593-656849223.png)
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322154316334-570918601.png)
浅拷贝:直接赋值的是内存地址,赋值之后,两个变量使用相同内容,一个操作,另一个也会改变。
深拷贝:只赋值 引用数据类型中的 数值 而不是 复制地址,内存地址不相同成为深拷贝。
只复制int1中的数据;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322155141219-1063006883.png)
循环遍历,获取int1中的所有数据数值,赋值到新的数组中;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322155235279-1494572685.png)
通过循环,生成int1的所有索引下标;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322155342121-1081988588.png)
int1[i] 就是获取 int1中的 存储的 数据信息,
int2.push() 将int1中的数据 int1[i] , 写入到 int2中;
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322155438241-1136100075.png)
![](https://img2020.cnblogs.com/blog/1947762/202003/1947762-20200322155759225-1434862689.png)
深拷贝:循环遍历,获取引用数据类型中,存储的每一个数据信息赋值到新的变量中,赋值之后
两个变量产生不同的内存地址,没有任何关系。