无法逃避的装箱和拆箱

概念

装箱:由值类型转换为引用类型

拆箱:由引用类型转换为值类型

代码解析

在这里插入图片描述

逐步分析以上代码:

1 int i=5; 在栈中新建变量i,值为5

2 object o=i;在堆中新建变量o,储存实际值5,并将5在堆中的地址储存在栈中

3 int j=(int)o;在栈中新建变量j,通过栈中o的地址访问对应内存的值,并将该值储存在栈中j的地址上

图解
在这里插入图片描述

补充

从代码分析和图解可以看出装箱和拆箱存在以下问题:

1 占用空间,装箱和拆箱在堆和栈上开辟空间,已占用的空间无法及时回收

2 性能影响,拷贝占用CPU,额外的资源开销

疑惑解答

为什么装箱比拆箱开销大?

从图上可以看出装箱和拆箱都涉及空间的开辟,但装箱不仅有指针耗费,还有拷贝占用CPU资源,从这两点上说装箱比拆箱更占用资源。

建议:尽量避免使用装箱和拆箱

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值