主要分为三部分来讲。第一部分是java关键字null本身所代表的意义;第二部分是null的使用场景;第三部分是null与集合。学习整理自null总结
Java关键字null
null本身不是对象
- null是java的一个关键字,并不是一个对象,下面通过代码进行说明
public class Demo
{
public static void main(String[] args)
{
if(null instanceof java.lang.Object)
System.out.println("yes");
else
System.out.println("no");
}
}
- 测试结果为no
null本身所具有的二义性
- null本身拥有两层意思:
- null代表值不存在
- null本身表示值
- 举例说明。以下代码可以说明两种情况:第一种是Map中key对应的值为null;第二种是Map中不存在与key对应的value
Map.get(key) == null
null的使用情况
- 通常在不确定变量的值的时候使用null,通过以下代码说明:
People student = null;
if (flag == true)
student = new Student();
else
student = new Teacher();
System.out.println("the name is : " + student.getName());
- 此处为什么要用null:java变量使用原则是先声明,然后初始化,再使用。如果不使用null进行初始化,这几句代码就不会通过编译。因为变量的初始化是在if…else…当中的
容器类型与null
- List:允许重复元素,可以加入任意多个null。
- Set:不允许重复元素,最多可以加入一个null。
- Map:Map的key最多可以加入一个null,value字段没有限制。
- 数组:基本类型数组,定义后,如果不给定初始值,则java运行时会自动给定值。引用类型数组,不给定初始值,则所有的元素值为null。
null的其它作用
- 判断一个引用类型是否为null,用“==”
- 释放内存:让一个非null的引用变量指向null。这样之前引用指向的对象就不再被使用,此时等待JVM启动垃圾回收机制,回收内存