当前位置 博文首页 > gistmap:在项目中应该使用Boolean还是使用boolean?

    gistmap:在项目中应该使用Boolean还是使用boolean?

    作者:gistmap 时间:2021-01-19 00:06

    起因

    在公司看代码时,看到了使用Boolean对象来完成业务逻辑判断的操作。和我的习惯不一致,于是引起了一些反思。
    boolean和Boolean的差别咱就不说了,我们仅探讨使用boolean与Boolean的场景。

    样例 1 没必要的拆装箱

    Boolean isSingle = true;
    boolean isMarried = Boolean.FALSE;
    

    这是应该极力避免的,无谓的拆装箱操作会有一定性能的影响。

    样例 2 业务中常见的使用方式

    Boolean isSingle = Boolean.FALSE;
    // 一些其他操作,可能改变isSingle的值
    if (!isSingle &&  otherBoolean) {
        // 一些操作
    } else {
        // 一些操作
    }
    

    我会觉得这里使用boolean会更好,甚至找不到使用Boolean对象的理由。
    而使用boolean有更多的好处,比如:

    • 更少的内存占用,基本类型和包装类的差距。即便我们不知道在当前JVM下,boolean具体占几个字节。Boolean还是比boolean大得多
    • 如果是以上代码,你甚至不用去初始化。基本类型的好处:有默认值。这也变相意味着不会发生NPE。
    • 少敲几次键盘

    那什么时候需要使用Boolean类型?

    第一个就是我们在使用容器内需要装布尔值的时候,这时候我们别无选择,只能使用Boolean类。
    其次,翻了Boolean类型的源码,并看了看具体的几个方法。我觉得比较实用的还是toString和两个valueOf
    Boolean非常适用于与String相互转换的场景使用。
    如我们对接一个三方接口,其传的是字符串true,false。我们则可以使用Boolean.valueOf(target)来转换成Boolean对象。

    实体类中应该使用Boolean还是boolean

    这一条大家应该都觉得使用Boolean比较好,但我在使用JPA的过程中还是觉得使用boolean更有优势。
    private boolean isDeleted,我就不需要去管他了。
    原因还是以上那些。

    个人浅见,欢迎探讨交流。