1. 程式人生 > >list!=null和list.size()>0的區別

list!=null和list.size()>0的區別

今天做判斷的時候遇到一個問題:我在判斷list是否為空的時候,用 list.size()>0,結果catch就捕捉到了異常,因為list獲取值為空,而直接使用 list !=null 的時候就順利執行,在這裡 搜到一些相關的比較:

list如果為空的話,說明沒有進行初始化,list壓根沒有地址,在堆內就不存在,當list呼叫任何的方法都會丟擲空異常,所以當list.size()時,理所當然報了異常!

list.size()==0說明list已經被new過,但是裡面沒有值。 
4.區別: 
①有沒有瓶子 list != null 
②瓶子裡有沒有水 list.isEmpty() 
判斷的時候一定要注意先後順序 

如果沒有瓶子都沒有,直接判斷有沒有水,是會報nullException的 
③另外: 
list.add(null) 
會造成list.isEmpty() 為 false, list.size() 為1 
所以程式碼裡要避免list.add(null)的陷阱 
④比較形象一個比喻: 

舉個形象的例子,我有一個空著的水杯(list),而你沒有,那你是null,我的size為0。你想裝水需要去買個水杯(new ArrayList();),我就可以直接裝水(list.add(水))。你要是沒有杯子直接倒水,水就流出去啦(空指標異常)。所以用做判斷的時候經常連用 list!=null && list.size()!=0 。

但我一般用 list !=null也不會出什麼錯。