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

众所周知,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

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 冬天,灰白的早晨 在沉睡的雪地上独行 一串串规整弯曲的脚印 纯净的心 掩埋了失落的身影 凛冽的寒风在催促 能够默默...
    安静的等待中阅读 151评论 0 0
  • 这几天的冷相信全国人民都感受到了,长这么大南方遭遇这么冷还是头一回。气象台一发布极寒消息就已经准备去添置衣物,没有...
    暴走君萨阅读 383评论 0 1
  • 我画一个圆 你在这中央歌唱可以 这方圆几里 圈住你 你想干什么可以 你不高兴 那着个圆可以是方形菱形 噢 原来 会...
    少男爱吃核桃阅读 262评论 0 1
  • 【妖约芳香122】 20180610 周日 嘉兴 阴有雨 27--20度 此刻我的感觉是,生活就是最大的...
    棻子阅读 299评论 3 1