實體類獲取空值時的判斷
阿新 • • 發佈:2018-12-17
前言
由於總是分不清equals
與==
的區別,該何時用什麼判斷是否為 null
實體類
public class User{
//正常String
private String biztoken;
//包裝類
private Long data1;
//基本資料型別
private long data2;
//日期型別
private Date date;
}
測試程式碼
String 的結果
public static void main(String[] args) {
User user = new User();
String biz = user .getBiztoken();
if(biz == null){
System.out .println("biz == null");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
if(biz == "null"){
System.out.println("biz =='null'");
}
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)" );
}
}
System.out.println(StringUtil.isEmpty(biz));//true
System.out.println(StringUtil.isBlank(biz));;//true
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) |
---|---|---|---|---|
String biz = find.getBiztoken(); | √ | |||
String biz = find.getBiztoken().toString(); | 空指標異常 | 空指標異常 | 空指標異常 | 空指標異常 |
String biz =String.valueOf(find.getBiztoken()); | √ | √ |
Long包裝類測試
public static void main(String[] args) {
User user = new User();
Long biz = find.getData1();
if(biz == null){
System.out.println("biz == null");
}
if(biz == 0){
System.out.println("biz == 0");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
//connot applied to "java.lang.Long","java.lang.String"
// if(biz == "null"){
// System.out.println("biz =='null'");
// }
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) | biz == 0 |
---|---|---|---|---|---|
Long biz = find.getData1(); | √ | 異常 | NullPointerException |
long 基本資料型別測試
public static void main(String[] args) {
User user = new User();
long biz = find.getData2();
// if(biz == null){
// System.out.println("biz == null");
// }
if(biz == 0){
System.out.println("biz == 0");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
// if(biz == "null"){
// System.out.println("biz =='null'");
// }
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
//System.out.println(StringUtil.isEmpty(biz));//異常,connot be applied to
System.out.println(StringUtil.isBlank(biz));;//false
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) | biz == 0 |
---|---|---|---|---|---|
Long biz = find.getData1(); | 異常 | 異常 | √ |
Date測試
public static void main(String[] args) {
User user = new User();
Date biz = user.getDate();
if(biz == null){
System.out.println("biz == null");
}
if(("").equals(biz)){
System.out.println("('').equals(biz)");
}
// if(biz == "null"){
// System.out.println("biz =='null'");
// }
if(("null").equals(biz)){
System.out.println("('null’).equals(biz)");
}
}
System.out.println(StringUtil.isEmpty(biz));//connot be applied to
System.out.println(StringUtil.isBlank(biz));;//true
conditions | biz == null | (“”).equals(biz) | biz == “null” | (“null”).equals(biz) |
---|---|---|---|---|
String biz = find.getBiztoken(); | √ | 異常,connot apply to Date,string |
總結
以下情況針對於直接用 get 空值時
1.對於包裝類的資料,直接用
==null
判斷
2.對於基本資料型別,沒有值時為 0
3.對於get 方法,取出來的應該是 Object 型別,
3.1 實體類中是包裝類,用Integer包裝類接收沒有問題,但如果用基本資料型別 int 接收,執行時會報空指標異常。
3.2 實體類中是基本資料型別,無論何種接收沒有問題,