深copy和浅copy区别 什么是深拷贝和浅拷贝?
什么是深拷贝和浅拷贝?
简单地说,假设B复制A。当A被修改时,看看B是否会改变。如果B随它改变,就意味着它是一个浅拷贝。如果a不改变,那就是深度复制和自我支撑。在本文中,我们还将简要讨论堆栈、基本数据类型和参考数据类型,因为这些概念可以更好地理解深度复制和浅层复制。让我们以一个浅拷贝为例:leta=[0,1,2,3,4],B=aconole.log文件(a===b)a[0]=1控制台.log(a,b)嗯?明明B抄了a,为什么要修改a阵,B阵也变了,在这里我不禁想。这里,我们要介绍基本数据类型和参考数据类型的概念。采访中常问,基本数据类型有哪些,数字、字符串、布尔、空、未定义五大类。引用数据类型(object class)包括object、array、date等。这两种类型的数据存储如下:a.基本类型-名称值存储在堆栈内存中,例如,leta=1。复制B=a时,堆栈内存将打开一个新内存。例如,此时修改a=2时,不会影响B,因为B已经消耗了自己的能量,翅膀很硬,不受a的影响。当然,leta=1,B=a。虽然B不受a的影响,但它不是深度复制,因为深度复制本身只用于更复杂的对象类型数据。b、 引用数据类型名称存在于堆栈内存中,值存在于堆内存中,但堆栈内存将为堆内存中的值提供引用地址。让我们画一幅上面浅层复制示例的图:当B=a被复制时,实际复制的是a的引用地址,而不是堆中的值。当我们在a[0]=1时修改数组时,由于a和B指向同一个地址,自然B也会受到影响,这就是所谓的浅拷贝。然后,如果在堆内存中创建一个新内存来存储B的值,就像基本类型一样,它将在开始时达到深度复制的效果
1。深拷贝和浅拷贝是源对象的拷贝,占用不同的内存空间。
2. 不可变类型的对象对深副本和浅副本没有影响,并且最终地址值和值是相等的。
3. 变量类型:
=shallow copy:等值,等地址
copy shallow copy:等值,不等地址
deep copy:等值,不等地址
你好,shallow copy(shadow clone):只复制对象的基本类型,对象类型,仍属于原始引用deep copy(deep clone):不复制基本类型类的对象,还可以复制原始对象中的对象。也就是说,它完全是由新对象生成的。我希望它能帮助你。
深copy和浅copy区别 关于浅复制和深复制的说法 浅拷贝概念
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。