1. 程式人生 > >【java】判斷各種資料型別是否為空

【java】判斷各種資料型別是否為空

一、前言

      話說前幾天進行了一次程式碼走查,這次程式碼走查的問題呢,就是要檢查程式碼的漏洞,提升自己寫程式碼的效率。其中就有一個是java判斷資料型別是否為空的了。自己以前寫.Net的程式碼,比如判斷字串為空用:a=="",但是在java中是不可以的,要用"".equals(a)來判斷。

二、判斷list是否為空(Map、Set同list)

if(list != null && list.size() == 0){
}

if(list != null && !list.isEmpty()){
}

list!=null:判斷是否存在listnull
表示這個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不為空");
}

五、小結

      多多總結,多多嘗試,多多實踐。成果就在最後!!~