【java】判斷各種資料型別是否為空
阿新 • • 發佈:2019-02-10
一、前言
話說前幾天進行了一次程式碼走查,這次程式碼走查的問題呢,就是要檢查程式碼的漏洞,提升自己寫程式碼的效率。其中就有一個是java判斷資料型別是否為空的了。自己以前寫.Net的程式碼,比如判斷字串為空用:a==""
,但是在java中是不可以的,要用"".equals(a)
來判斷。
二、判斷list是否為空(Map、Set同list)
if(list != null && list.size() == 0){
}
if(list != null && !list.isEmpty()){
}
list!=null:判斷是否存在list,null 表示這個list不指向任何的東西,如果這時候你呼叫它的方法,那麼就會出現空指標異常。
list.isEmpty():判斷list裡是否有元素存在
list.size():判斷list裡有幾個元素
所以判斷list裡是否有元素的最佳的方法是:
if(list != null && !list.isEmpty()){
//list存在且裡面有元素
}
三、判斷String型別資料是否為空
直接用if( s.equals(“”)),if( !s.isEmpty()),if(s.length()>0)來判斷:忽略了s為null的情況,s指向不確定的物件,無法呼叫一個確定的Sting物件的方法
(1)str == null;
(2)”“.equals(str);
(3)str.length <= 0;
(4)str.isEmpty();
正確形式:
String str = null;
if(str= == null||str.equals("") ){
System.out.println("success");
}
- 為什麼用equals()而不用==來區分?(why)
應該從它倆的區別談起,==是用來判斷兩者是否是同一物件(同一事物),而equals是用來判斷是否引用同一個物件。再看一下Set裡面存的是
物件,還是物件的引用。根據java的儲存機制可知,set裡面存放的是物件的引用,所以當兩個元素只要滿足了equls()時就已經指向同一個物件,
也就出現了重複元素。所以應該用equals()來判斷。
四、判斷date型別資料是否為空
Date date=…… //例項化
if(date==null){
System.out.println("date為空");
}else{
System.out.println("date不為空");
}
五、小結
多多總結,多多嘗試,多多實踐。成果就在最後!!~