今天在刷算法题时,新建了ArrayList变量,发现ArrayList与null结合起来使用时经常出错。

请查看如下几种例子,

1、new一个ArrayList<>类型的数据,

 import java.util.ArrayList;

 public class Test
{ @SuppressWarnings("unused")
public static void main(String[] args)
{
ArrayList<Integer> al=new ArrayList<Integer>();
//al.add(null);
//al=null;
if (al==null)
{
System.out.println("al==null");
} if (al.isEmpty())
{
System.out.println("al is Empty");
} System.out.println("al.size(): "+al.size()); System.out.println("al.get(0): "+al.get(0));
al.add(5);
al.add(4);
}
}

2、将ArrayList<>变量置为null

 import java.util.ArrayList;

 public class Test
{ @SuppressWarnings("unused")
public static void main(String[] args)
{
ArrayList<Integer> al=null;
//al.add(null);
//al=null;
if (al==null)
{
System.out.println("al==null");
} if (al.isEmpty())
{
System.out.println("al is Empty");
} System.out.println("al.size(): "+al.size()); System.out.println("al.get(0): "+al.get(0));
al.add(5);
al.add(4);
}
}

通过这两个例子,可以看出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,但是还没来得及放元素,其长度随着元素数量变化而变化,暂时为零。

(原)list中null的谨慎使用的更多相关文章

  1. [原]MFC中DIALOG(对话框)程序响应加速键(快捷键)

    [原]MFC中DIALOG(对话框)程序响应加速键(快捷键) 2014-8-6阅读266 评论0 新建一个对话框程序,项目名为Test,删除默认确定,取消和静态文本框控件.添加一个按钮,Caption ...

  2. 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...

  3. [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...

  4. SQLSERVER中NULL位图的作用

    SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...

  5. Objective-C 中 NULL、nil、Nil、NSNull 的定义及不同

    本文由我们团队的 康祖彬 童鞋撰写,这是他的个人主页:https://kangzubin.cn. 理解"不存在"的概念不仅仅是一个哲学的问题,也是一个实际的问题.我们是有形宇宙的居 ...

  6. sql server中NULL导入decimal字段时报错

    sql server中NULL导入decimal字段时报错 在导入CSV文件时,如果decimal字段为null值,导致文本文件入库时失败. 错误现象 构造例子 新建一张表,包含decimal字段. ...

  7. mysql中NULL和null的区别

    接触php的web开发一段时间了,在进行数据库操作的时候经常会遇到一个问题,使得同一字段在页面显示时有3种类型NULL,null以及数字,当时的解决办法是将这一字段定义为varchar类型,在插入数据 ...

  8. JS中NULL和undifined区别及NULL的作用

    1.博客地址:http://www.cnblogs.com/eastday/archive/2010/03/03/1677324.html 2.参考地址2:https://www.zhihu.com/ ...

  9. sql中NULL的问题

    sql中NULL的问题   今天一不小心在sql中写出以下脚本 select defaultPositionId from TableName where UserId=1100528 and def ...

随机推荐

  1. log4j2 与 spring mvc整合

    log4j2不仅仅是log4j的简单升级,而是整个项目的重构,官网地址:http://logging.apache.org/log4j/2.x/,大家可以从官网的介绍看出它相比log4j第1代的种种优 ...

  2. EF下泛型分页方法,更新方法

    /// <summary> /// 获取分页的分页集合 /// </summary> /// <typeparam name="S">实体类型& ...

  3. win7下IIS配置以及域名映射方法

    win7下IIS配置以及域名映射方法 第一步:打开控制面板,选择程序与功能,如下图: 第二步:双击打开程序与功能面板,如下图: 第三步:打开”打开或关闭windows功能”(红线圈起来的地方),如下图 ...

  4. (转) RSA算法原理(一)

    最近用到了RSA加密算法,虽然有现成的,但是想看看它的原理,翻到此文,感觉写得很好,通俗易懂,转了.   作者: 阮一峰 日期: 2013年6月27日 如果你问我,哪一种算法最重要? 我可能会回答&q ...

  5. TensorFlow的开源与Hadoop的开源

    最近看TensorFlow代码的时候,用Git pull下来最新的master一看,哇好多的更新,然后点击去之前看到一半的cc文件继续看,好多地方都改变了.但是一看Git log,有好多巨大的comm ...

  6. unittest使用过程中sys.exit(not self.result.wasSuccessful())

    起因: 在运行下面的unittest过程中出现了个Traceback: 被测试脚本: # splitter.py def split(line, types=None, delimiter=None) ...

  7. app状态监听广播

    手机中的应用在安装.更新和卸载时都会发送广播 清单文件 <?xml version="1.0" encoding="utf-8"?> <man ...

  8. 东大OJ-一元三次方程解的个数

    1043: Fixed Point 时间限制: 5 Sec  内存限制: 128 MB 提交: 26  解决: 5 [提交][状态][讨论版] 题目描述 In mathematics, a fixed ...

  9. difference between append and appendTo

    if you need append some string to element and need set some attribute on these string at the same ti ...

  10. 网上找到的一个jquery版网页换肤特效

    这个跟我之前在锋利的JQuery那本书里看到的那个一模一样. <!DOCTYPE html> <html> <head> <meta name="& ...