NPE问题一直都是程序员都会经历的,今天简单总结一下
- Java中的任何引用变量都将null作为默认值,基本数据类型不是(byte,short,int 为0;long 为0L;float为0.0f ;double 为0.0d ; char 为 ‘\u0000’ ;boolean 为false)
- null既不是对象也不是一种类型,它仅是一种特殊的值,可以把它付给任何引用类型
- 如果使用了带有null值的引用类型变量,instanceof操作将会返回false
System.out.println(nullInteger instanceof Integer);//fasle
4.
你可以使用==或者!=操作来比较null值,但是不能使用其他算法或者逻辑操作,例如小于或者大于。跟SQL不一样,在Java中null==null将返回true
System.out.println(null == null);//true
5.null是Java中的关键字 大小写敏感
6.
null可以赋值给引用变量,你不能将null赋给基本类型变量
Integer nullInteger = null
下面写两个会报空指针的例子:
Integer nullInteger = null;
int data = nullInteger;
System.out.println(data);
上面这个例子就是第6点的错误,包装类在拆箱的时候将null赋值给基本类型变量时候出现NPE
Map map = new HashMap<>();
int[] numbers = {1,2,3,4,5,6,7};
for(int i : numbers){
int f =i;
int count = (int) map.get(i);
map.put(i, count++); // NullPointerException here
}
以上也是将null 赋值给基本类型变量产生NPE