概念
装箱:由值类型转换为引用类型
拆箱:由引用类型转换为值类型
代码解析
逐步分析以上代码:
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资源,从这两点上说装箱比拆箱更占用资源。
建议:尽量避免使用装箱和拆箱