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將返回trueSystem.out.println(null == null);//true
5.null是Java中的關鍵字 大小寫敏感
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