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

  • 相关阅读:
    c标签页面进行解析json
    Android 简述touch事件中的MotionEvent
    R中读取文件,找不到路径问题 No such file or directory
    文章标题
    Codeforces Beta Round #2 C. Commentator problem
    openfire 开发遇到的些问题
    BZOJ 刷题记录 PART 5
    公司又裁人了……
    最简单的基于FFmpeg的移动端样例:Android 视频转码器
    单片机: 简易计算器的实现(键盘)
  • 原文地址:https://www.cnblogs.com/xh0102/p/5808166.html
Copyright © 2011-2022 走看看