装箱与拆箱

装箱、拆箱之区别

 

定义

例子

 

装箱

将值类型转换为引用类型

int i=123;

object o=(object)i ;

低类型—>高类型

拆箱

将引用类型转换为值类型

o=123;

i=(int)o;

高类型-à低类型

拆箱和装箱的目的

      关于装箱和拆箱,往往是在对值类型进行的操作,目的是将值类型数据从在栈上的存储转移到堆上,这样就和普通Object具有了同样的存储结构,栈上存储地址,堆上存储数据.这样就可以达到统一处理的效果。

什么情况下需要装箱和拆箱

     值类型数据是分配在栈中,而引用类型数据分配在堆上。那么如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的值类型数据取出来,则需要进行拆箱操作。

优点

      利用装箱和拆箱功能,可通过允许值类型的任何值与Object类型的值相互转换,将值类型与引用类型连接起来。

缺点

     相对于简单的赋值而言,装箱和拆箱过程需要进行大量的计算。对值类型进行装箱时,必须分配并构造一个全新的对象。其次,拆箱所需的强制装换也需要进行大量的计算。总之,装箱拆箱是耗费时间和资源的。

简单介绍堆、栈

程序员根据需要自己申请的空间

引用类型在堆中分配内存

后进先出(即后存放的先取,先存放的后取)

系统自动分配空间的

值类型在栈中分配内存

存取随意

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值