(原)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,但是还没来得及放元素,其长度随着元素数量变化而变化,暂时为零。

原文地址:https://www.cnblogs.com/xh0102/p/5808166.html