问题:基本数据类型和包装类有什么区别吧,什么时候用包装类什么时候用基本数据类型?
- 最本质的区别:基本数据类型不是对象,包装类型是对象
- 存储位置不同:基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后通过引用来使用
- 基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;
- 包装类的对象可以放进集合中而基本数据类型不可以
阿里巴巴开发手册:
【强制】关于基本数据类型与包装数据类型的使用标准如下:
1) 所有的POJO类属性必须使用包装数据类型。
2) RPC方法的返回值和参数必须使用包装数据类型。
3) 所有的局部变量推荐使用基本数据类型。
说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE(空指针异常)问题,或者入库检查,都由使用者来保证。
正例:数据库的查询结果可能是null,因为自动拆箱,用基本数据类型接收有NPE风险。
反例:某业务的交易报表上显示成交总额涨跌情况,即正负x%,x为基本数据类型,调用的HSF服务,调用不成功时,返回的是默认值,页面显示:0%,这是不合理的,应该显示成中划线-。所以包装数据类型的null值,能够表示额外的信息,如:远程调用失败,异常退出。