包装类和原始类?
我想看到这篇文章的大部分 coder 都不太清楚我到底 什么时候该使用 原始类型 (int、long boolean ……)
什么时候该使用 包装类型 (Integer Long Boolean ……)
给出使用准则
关于基本数据类型与包装数据类型的使用标准如下:
1) 所有的POJO类属性 必须使用 包装数据类型。
2) RPC方法的返回值和参数 必须使用 包装数据类型。
3) 所有的局部变量 推荐使用 基本数据类型。
说明:POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。
public class DemoDO {
String str;
Integer a;
}
为什么这样做
首先了解一点 包装类型 和 基本数据类型 对于我们来说 直观上讲 区别是 :
包装类型 可以 为 null
基本数据类型 不可以 为 null
对于 POJO 属性 和 RPC 的返回值和参数值 要使用 包装类型:
说明:POJO 类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE 问题,或者入库检查,都由使用者来保证。
正例:数据库的查询结果可能是 null,因为自动拆箱,用基本数据类型接收有 NPE 风险。
反例:比如显示成交总额涨跌情况,即正负 x%,x 为基本数据类型,调用的 RPC
服务,调用不成功时,返回的是默认值,页面显示:0%,这是不合理的,应该显示成中划线-。所以包装数据类型的 null
值,能够表示额外的信息,如:远程调用失败,异常退出。
对于推荐 所有的局部变量 使用 基本数据类型
我们知道,Java中共有三种变量,分别是类变量、成员变量和局部变量。他们分别存放在JVM的方法区、堆内存和栈内存中。
其中局部变量的作用域只在方法内部,不会逃逸到方法外。那么,既然是一个作用域只在方法内的变量,不需要考虑那么多,怎么性能高就怎么定义。在Java语言中,new一个对象是存储在堆里的,我们通过栈中的引用来使用这些对象。所以,对象本身来说是比较消耗资源的。
对于经常用到的类型,如int等,如果我们每次使用这种变量的时候都需要new一个Java对象的话,就会比较笨重。而基本数据类型的变量不需要使用new创建,它们不会在堆上创建,而是直接在栈内存中存储,因此会更加高效。
我是 dying 搁浅 ,我始终期待与你的相遇。无论你是否期待,潮涨潮落,我仅且就在这里…………
转载:https://blog.csdn.net/w903328615/article/details/115874626