眾所周知滴须,Java是一門oop語言台猴,但是里面還是有8種基本類型橘券。因?yàn)椤敖y(tǒng)一”這八個異類,jdk5之后引入了拆箱裝箱的概念卿吐。
但是我們還是習(xí)慣用基本數(shù)據(jù)類型來定義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磺樱。
再來看一個例子,現(xiàn)有一個視頻Video的pojo類,它有一個屬性isDelete是否刪除婆咸,我們規(guī)定1是刪除竹捉,0是不刪除。
如果isDelete是基本數(shù)據(jù)類型int尚骄,則相關(guān)業(yè)務(wù)判斷這么寫:
if (video.getIsDelete() ==1) {
// do something
}
但是如果isDelete是封裝類型Integer块差,則上述寫法是有問題的:1.video.getIsDelete()可能是null,引發(fā)Null Pointer Exception倔丈;2.對象和基本數(shù)據(jù)類型不能直接用“==”比較(除了自動裝箱拆箱外)憨闰,也不能無腦的用equals()。
// 一般寫法
if (video.getIsDelete() !=null &&1 == video.getIsDelete()) {
// do something
}
// 推薦寫法
if (Integer.valueOf(1).equals(video.getIsDelete())) {
// do something
}