美文网首页Java
java中包装类与基本类型的运用对比

java中包装类与基本类型的运用对比

作者: 修远路 | 来源:发表于2018-06-22 10:08 被阅读0次

    众所周知,Java是一门oop语言,但是里面还是有8种基本类型。因为“统一”这八个异类,jdk5之后引入了拆箱装箱的概念。

    但是我们还是习惯用基本数据类型来定义pojo的一些属性,如:

    public class Person1 {

    // 姓名

      private String name;

      // 年龄

      private int age;

      // 是否成年

      private boolean isAdult;

      //setter and getter.

    //...

    }

    受公司某位前辈的熏陶和万物皆对象的“荼毒”,决定都使用对象来写,于是:

    public class Person2 {

    // 姓名

      private String name;

      // 年龄

      private Integer age;

      // 是否成年

      private Boolean isAdult;

      //setter and getter.

    //...

    }

    初看一样,只不过Person1的age初始值是0,isAdult是false;而Person2的age和isAdult是null。

    再来看一个例子,现有一个视频Video的pojo类,它有一个属性isDelete是否删除,我们规定1是删除,0是不删除。

    如果isDelete是基本数据类型int,则相关业务判断这么写:

    if (video.getIsDelete() ==1) {

    // do something

    }

    但是如果isDelete是封装类型Integer,则上述写法是有问题的:1.video.getIsDelete()可能是null,引发Null Pointer Exception;2.对象和基本数据类型不能直接用“==”比较(除了自动装箱拆箱外),也不能无脑的用equals()。

    // 一般写法

    if (video.getIsDelete() !=null &&1 == video.getIsDelete()) {

    // do something

    }

    // 推荐写法

    if (Integer.valueOf(1).equals(video.getIsDelete())) {

    // do something

    }

    相关文章

      网友评论

        本文标题:java中包装类与基本类型的运用对比

        本文链接:https://www.haomeiwen.com/subject/pjnhyftx.html