直接将一个引用数据类型的地址,赋值给另一个变量存储的,称为浅拷贝
上图所示,我们发现:操作数组arr1,arr2也会改变
分析:
(1)将arr1 存储的内存地址,赋值给arr2,两个变量存储的是相同的内存地址,
即var arr2 = arr1;
(2)因为arr1与arr2,同时存储的是相同的内存地址,所以操作的也就是同一个数组
(3)同理,操作数组arr2,arr1也会改变
如果要操作一个数组,另一个不发生改变,可以怎么做?
(这就是我们接下来要讲解的内容)
二.深拷贝
只复制引用数据类型中的数值,而不是复制地址,称为深拷贝
如图所示,我们利用深拷贝的方法解决了上边的问题
分析:
(1)建立一个独立的变量,复制引用数据类型中的数据内容
(2)现在它们存储的就不是相同的内存地址了,所以对数组arr1操作arr2不发生变化
浅拷贝:直接赋值,赋值的是内存地址。赋值之后 两个变量使用的相同内容,一个操作,另一个也会改变
深拷贝:循环遍历获取引用数据类型中存储的每一个数据信息,赋值到新的变量中。赋值之后,两个变量,没有任何关系
原文:https://www.cnblogs.com/gnn0804/p/12548167.html