在工作中經常會見到類似這樣的if條件:
List emps = new ArrayList();
if(emps!=null && emps.size()!=0){
//此處代碼省略…
}
經測試,二者的確是不同的.如下代碼:
(1)聲明一個集合,但不賦值:
public class T3 {
public static void main(String[] args) {
List emps = new ArrayList();
System.out.println("emps is null? " + (emps==null));
System.out.println("emps的長度:"+emps.size());
if(emps!=null && emps.size()==0){
System.out.println("集合不爲NUll,但是集合的長度卻爲零.");
}
}
}
打印結果:
(2)聲明一個集合 t ,直接賦值爲null
public class T3 {
public static void main(String[] args) {
List emps = new ArrayList();
System.out.println("emps is null? " + (emps==null));
System.out.println("emps的長度:"+emps.size());
if(emps!=null && emps.size()==0){
System.out.println("集合不爲NUll,但是集合的長度卻爲零.");
}
List t = null;
System.out.println("t is null? " + (t==null));
System.out.println("t的長度:"+t.size());
}
}
程序運行結果:
因爲t爲Null,是點不出size()方法的.
所以一般先判斷對象是否爲NULL,如果不是再去判斷其長度是否爲零,進一步的做邏輯判斷.