今天在刷算法题时,新建了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. PRML读书会第十一章 Sampling Methods(MCMC, Markov Chain Monte Carlo,细致平稳条件,Metropolis-Hastings,Gibbs Sampling,Slice Sampling,Hamiltonian MCMC)

    主讲人 网络上的尼采 (新浪微博: @Nietzsche_复杂网络机器学习) 网络上的尼采(813394698) 9:05:00  今天的主要内容:Markov Chain Monte Carlo,M ...

  2. Nodejs进阶:核心模块net入门与实例讲解

    模块概览 net模块是同样是nodejs的核心模块.在http模块概览里提到,http.Server继承了net.Server,此外,http客户端与http服务端的通信均依赖于socket(net. ...

  3. Tyk API网关介绍及安装说明

    Tyk API网关介绍及安装说明 Tyk是一个开源的轻量级API网关程序. 什么是API网关 API网关是一个各类不同API的前置服务器.API网关封装了系统内部架构,对外提供统一服务.此外还可以实现 ...

  4. CSS与JQuery的相关问题

    文字隐藏:p div里面的文字过长时隐藏文字: overflow:hidden; text-overflow:ellipsis; white-space:nowrap; --------------- ...

  5. 使用Topshelf创建Windows服务

    概述 Topshelf是创建Windows服务的另一种方法,老外的一篇文章Create a .NET Windows Service in 5 steps with Topshelf通过5个步骤详细的 ...

  6. CSS3自动添加省略号

    text-overflow:ellipsis; white-space:nowrap; overflow:hidden; 不换行,一行显示溢出时,文本自动换行.以前都是js计算的,现在可好. elli ...

  7. linux 系统下 android studio 获取SHA1

    百度地图申请key的时候需要填写包名和SHA1 包名比较好找可以在 AndroidManifest.xml 文件中找到 SHA1的获取方式有两种可以在android studio 下面选择Termin ...

  8. 线性表的顺序存储结构C语言版

    #include <stdio.h> #define MAXSIZE 101 #define N 10 typedef struct SeqList { int data[MAXSIZE] ...

  9. 顺序栈C语言实现

    "` #include <stdio.h> #define MAXSIZE 10001 #define ELEMTYPE int #define STACK_EMPTY -999 ...

  10. [转]如何判断js中的数据类型

    原文地址:http://blog.sina.com.cn/s/blog_51048da70101grz6.html 如何判断js中的数据类型:typeof.instanceof. constructo ...