下面分别用三段代码来展示他们之间的区别:
代码一:
public static void main(String[] args) {
// Map的isEmpty()和==null的区别
Map<String, Object> map = new HashMap<>();
boolean flag1 = map.isEmpty();
System.out.println("Map是否为Empty=====" + flag1);
boolean flag2 = map == null;
System.out.println("Map是否为null=====" + flag2);
}
结果:
Map是否为Empty=====true
Map是否为null=====false
代码二:
public static void main(String[] args) {
Map<String,Object> map = null;
boolean flag2 = map == null;
System.out.println("Map是否为null=====" + flag2);
boolean flag1 = map.isEmpty();
System.out.println("Map是否为Empty=====" + flag1);
}
结果:
Map是否为null=====true
Exception in thread "main" java.lang.NullPointerException
at com.juren.captain.controller.TestMap2.main(TestMap2.java:13)
代码三:
public static void main(String[] args) {
Map map = new HashMap<String, String>();
map.put(null, null);
boolean flag1 = map.isEmpty();
System.out.println("Map是否为Empty=====" + flag1);
boolean flag2 = map == null;
System.out.println("Map是否为null=====" + flag2);
}
结果:
Map是否为Empty=====false
Map是否为null=====false
综上所述总结isEmpty() 和 ==null 的区别在于
isEmpty()
表示map是否开辟新空间并且空间内有无键值对(第一段没有键值对所以是空的,第三段即使key和value都是null那也代表有键值对所以不是空的,第二段null只代表一种状态所以空指针异常了)
==null
表示这个map是否没有开辟新空间,只是null装填