深拷贝和浅拷贝

深拷贝和浅拷贝

了解深拷贝和浅拷贝之前,要先了解基本类型和引用类型

基本类型:直接存储在栈中的数据,例如:字符串、布尔值、未定义、数字、null(null只是一个空指针对象,没有数据)。

引用类型:将该对象引用地址存储在栈中,然后对象里面的数据存放在堆中,例如:数组、对象、函数。

深拷贝,浅拷贝,从名字很清楚就是复制,创建副本。这里我举个栗子🌰:假设有对象PeopleA,PeopleA对象有两个属性:age(基本类型)、hobbies(引用类型)。这里我拷贝一下PeopleA会得到PeopleB,PeopleB也应有age、hobbies属性,对于基本类型的age无疑是完成了复制,将值复制了一份,但是对于引用类型的hobbies来说,拷贝就有了两层意义:

第一层:hobbies拷贝只是将PeopleA的hobbies引用的地址拷贝了一份给PeopleB,看上去效果是一样的,叨叨了拷贝的效果,但是其实PeopleA和PeopleB的hobbies属性引用的是一个地址,也就是说当我们对PeopleB的hobbies属性进行操作,这个操作也会影响PeopleA,这就是所说的浅拷贝。

第二层:hobbies拷贝是将PeopleA的hobbies的所指对象拷贝一份,将拷贝出的那份对象的地址给PeopleB,这样对PeopleB的操作不会影响到PelpleA,因为PeopleB的hobbies指向的是PeopleA拷贝出来的hobbies,这就是所说的深拷贝。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值