(原)list中null的謹慎使用


今天在刷算法題時,新建了ArrayList變量,發現ArrayList與null結合起來使用時經常出錯。

請查看如下幾種例子,

1、new一個ArrayList<>類型的數據,

 1 import java.util.ArrayList;
 2 
 3 public class Test
 4 {
 5     
 6     @SuppressWarnings("unused")
 7     public static void main(String[] args)
 8     {
 9         ArrayList<Integer> al=new ArrayList<Integer>();
10         //al.add(null);
11         //al=null;
12         if (al==null)
13         {
14             System.out.println("al==null");
15         }
16         
17         if (al.isEmpty())
18         {
19             System.out.println("al is Empty");
20         }
21         
22         
23         System.out.println("al.size():    "+al.size());
24         
25         System.out.println("al.get(0):    "+al.get(0));
26         al.add(5);
27         al.add(4);        
28     }    
29 }

2、將ArrayList<>變量置為null

 1 import java.util.ArrayList;
 2 
 3 public class Test
 4 {
 5     
 6     @SuppressWarnings("unused")
 7     public static void main(String[] args)
 8     {
 9         ArrayList<Integer> al=null;
10         //al.add(null);
11         //al=null;
12         if (al==null)
13         {
14             System.out.println("al==null");
15         }
16         
17         if (al.isEmpty())
18         {
19             System.out.println("al is Empty");
20         }
21         
22         
23         System.out.println("al.size():    "+al.size());
24         
25         System.out.println("al.get(0):    "+al.get(0));
26         al.add(5);
27         al.add(4);        
28     }    
29 }

通過這兩個例子,可以看出list==null和用new新建出的arrayList<>是不同的。以至於調用list.size()也會有所不同。

 

在此加深一下null的認識:

null是沒有地址的;

B b=new B();

這是b指向B對象。

b=null;

b指向空。

 

在此說明一下list!=null和list.size()的區別:

1、list==null,意味着list壓根沒有地址,在堆內就不存在,說明其沒有進行初始化,這時llist調用任何方法都會拋出空異常。

2、list.size()=0,意味着堆內有list,但是還沒來得及放元素,其長度隨着元素數量變化而變化,暫時為零。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM