自动装箱和拆箱

在java中我们知道基本数据类型都有对应的包装类,如int的包装类Integer

自动装箱就是指Java编译器自动将基本数据类型转换它们对应的包装类型,如int转为Integer

自动拆箱则是反过来,Java编译器自动将包装类型转换为它们对应的基本数据类型,如Integer转为int

那么有什么作用呢?

自动装箱和拆箱是在java1.5之后引用的,在那之前我们要将int变为Integer或者将Integer变为int,都需要像下面这样手动去设置,很麻烦

引入自动装箱和拆箱后,我们就不需要再手动转换了,简化了代码编写

弊端

频繁的自动装箱和拆箱会带来性能影响,比如在循环中频繁发生自动装箱拆箱

那么每次sum+=i的时候,都会发生一次自动拆箱将sum与i相加,相加后再一次自动装箱生成新的Integer对象作为sum,所以循环结束后我们就会创建1000个无用的Integer对象,假想一下假如循环的一次不是1000,而是更大的数,程序的性能是不是就会受到影响,也增加了垃圾回收的工作量

另外还有可能出现空指针异常,因为我们知道包装类是可以为null的,而基本数据类型是不能为null的,如果包装类的值为null,在自动拆箱时就会发生空指针异常,如

Integer sum = null;

int num = sum;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值