java的8种基本类型都有其对应的装箱类型:
注:装箱类型比基本类型多一个非功能值null。
自动装箱:valueOf(int i)
自动拆箱:intValue()
基本类型优于装箱类型:
- 装箱类型是引用类型,需要额外的空间代价;
- 装箱类型与基本类型运算,需要拆箱,反复的装箱、拆箱降低性能;
- 装箱类型的判等(==):小于128,自动拆箱,做基本类型的比较;大于127,做对象相等判断。
什么时候使用装箱类型:
- 作为集合的元素、键、值;
- 在参数化类型中,如ThreadLocal<Integer>,因为反射需要引用类型。
常见问题:
- 场景:定义了int常量SUCCESS=0,逻辑处理中,从数据库取出的某条记录状态字段(Integer status),判断是否为success,抛出了NullPointException。
分析:典型的int与Integer比较问题。问题关键在于Integer与int比较时,会自动拆箱,status.intValue();若此时的status为null,就会出现该问题。
解决方案:
if (status != null && status == SUCCESS) { //处理 }
或者
SUCCESS指定为Integer,使用SUCCESS.equals()。
本文参与
腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-05-07,如有侵权请联系
cloudcommunity@tencent.com 删除