前言:
我們在項目中經常需要對擷取的list集合或String類型變量判空,看前輩的代碼,不同的人判空的方法不一樣,那麼,Java代碼中,對list集合和String類型變量到底該如何判空呢?
一、Java list集合判空
一般的做法是
if(list!= null && list.size() != 0){}
if(list != null&& !list.isEmpty()){}
1、list!=null:判斷是否存在list,null表示這個list不指向任何的東西,如果這時候你調用它的方法,那麼就會出現空指針異常。
2、list.isEmpty():判斷list裡是否有元素存在。
3、list.size():判斷list裡有幾個元素。
一個形象的比喻:
list!=null,判斷是不是連水杯都沒有,
list.isEmpty()和list.size(),判斷水杯裡面有沒有水。
判斷list裡是否有元素的最佳的方法是:
if(list != null&& !list.isEmpty()){
//list存在且裡面有元素
}
二、判斷java string類型資料不為空
string 類型為空的四種情況:
1、str== null:null表示這個字元串不指向任何的東西,如果這時候你調用它的方法,那麼就會出現空指針異常。
2、"".equals(str):""表示它指向一個長度為0的字元串,這時候調用它的方法是安全的。
3、str.length<= 0:字元串長度判斷
4、str.isEmpty():字元串是否為空
注意:
1、length是屬性,一般集合類對象擁有的屬性,取得集合的大小。
例如:數組.length就是取得數組的長度。
2、length()是方法,一般字元串類對象有該方法,也是取得字元串長度。
例如:字元串.length();
3、null不是對象,""是對象,是以null沒有配置設定空間,""配置設定了空間。
Java 判斷字元串是否為空的四種方法:
方法A:最多人使用的一個方法, 直覺, 友善,但效率很低;
if(s ==null &&s.equals("")){
//s為空執行
}
方法B:Java SE 6.0 才開始提供的方法,效率和方法C幾乎相等, 但出于相容性考慮, 推薦使用方法C;
if (str == null ||str.isEmpty()){
//s為空執行
}
方法C:比較字元串長度, 效率高, 是最好的一個方法;
if (str == null ||str.length() <= 0){
//s為空執行
}
方法D:這是一種比較直覺,簡便的方法,而且效率也非常的高,與方法二、三的效率差不多;
if (str == null || str ==""){
//s為空執行
}
是以,判斷一個字元串是否為空,首先就要確定他不是null,然後再判斷他的長度。
String str = xxx;
if(str != null && str.length() !=0) { }
三、關于a!=null和null!=a的糾結
a!=null,相信大家都能了解,那麼,null!=a,是個怎樣的存在呢?做比較時,我們會将常量寫在左邊,為什麼會有null!=a這種寫法呢?
解:防止程式員做比較時,少寫“=”
java中if内的判斷語句不同與其他語言,其if内的表達式的值隻能是boolean或其裝箱類型。是以 null == a 比 xxx == a唯一的好處在java就是當a為 Boolean類型時候,書寫null == a 時悲劇的少寫一個 “=” 後 ,null = a會報錯,而 a = null 不會,此時,就可能産生空指針異常。
總結:
判空的原則:先判斷變量是否為null,再判斷是否内容
參考: