飞道的博客

请你不要在这样使用 int 和 Integer 了 !!

213人阅读  评论(0)

包装类和原始类?

我想看到这篇文章的大部分 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
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场