场景:
对于包装类型,很多时候不知道包装类型和基本类型有什么区别,什么场景下用包装类型、什么场景下用基本数据类型,这里做一下简单的理解和应用说明
区别和概念:
1、以 Integer 和 int 类型为例,Integer 为包装类型,int 为基本数据类型,此二者最大的区别在于 Integer 类型默认值为 null ,而 int 类型默认值为 0。还有布尔类型等
2、存储位置和存储效率不同,基本类型是直接存储变量的值在堆栈中能高效的存取。而包装类型需要通过引用指向实例,具体的实例保存在堆中
3、Integer 类型使用 == 只能正确比较 -128~127 范围之内的数字值,此范围之外的必须使用 equals 才可以正确比较。
4、如果使用数字直接和包装类型变量比较,那么会自动拆箱包装类型,可以正常比较,例如:Integer a = 200、Integer b = 200,然后使用 200==a 就可以正确比较,因为自动做了拆箱,但如果用 a==b 就无法正确比较,这时候需要使用 equals 比较
应用场景:
1、根据阿里巴巴开发规范要求,所有的POJO中属性必须全部使用包装类型,局部变量使用基本类型
2、适业务而定,如果允许 null 值则必然要使用包装类型,否则可以使用基本类型
3、所有的 rpc 方法传递的关键字段属性必须用包装类型,例如接口全局统一响应的状态码属性,一般使用 Integer 类型