装箱拆箱

装箱拆箱

装箱拆箱是从变量的类型上是 引用类型与值类型之间的转换
装箱:将值类型封装成引用类型
拆箱:将引用类型转换成值类型

里面包括一些定义,举个例子:

int i = 1; 
object obj = i; 
i = (int)obj;

i是值类型,obj是引用类型
堆:内存中一块区域,存放引用类型,需要先申请一定大小,才能往里放数据
栈:内存中一块区域,存放值类型,程序启动的时候就默认指定了大小,一般是1M,不需要再申请空间,遵循先进后出的顺序
装箱步骤:

1.将i弹到栈顶
2.在堆中申请一块空间,大小为 i的大小+额外一点空间(指针 + 同步块)
3.将栈中i的值复制到堆中(此时,堆栈中各有一份i的值,是深复制,所以修改i的值不会影响obj的值)

拆箱步骤:
将obj的值unbox为int类型的值,存放到栈中(此时也是堆栈中各有一份值,互不影响)

两者都消耗了cpu资源
但是装箱比拆箱多消耗内存(在堆中申请了内存)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值