无法逃避的装箱和拆箱

概念

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

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

代码解析

逐步分析以上代码:

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资源,从这两点上说装箱比拆箱更占用资源。

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

原文地址:https://www.cnblogs.com/arvinzd/p/14143906.html