相信空指針是平時最多見的錯誤了,下面認識 null ,有助於解決 NPE 問題。java
關於這個問題,實際上是對面試時候手寫算法題時候須要注意的問題。面試
null 它是 Java的關鍵字,它是大小寫敏感的,不能寫成 NULL,Null等等。算法
固然在現實工做中,現有市面上的流行編譯器通常會有報錯提示。工具
這裏須要注意是引用類型,基本數據類型的,int 默認初始值是 0;boolean 默認初始值是 false 等。指針
也就是說 Object 類型的默認初始值都是 null 。code
null 既不是對象也不是數據類型,他只是一種特殊的值。對象
能夠將它複製給任何引用類型的變量,這時並不會拋出空指針異常。blog
可是注意,並不能賦值給基本數據類型的變量,由於持有 null 的包裝類在進行自動拆箱的時候,不能完成轉換,會拋出空指針異常。null 同時也不能和基本數據類型做比較。編譯器
public static void main(String[] args) { Integer isNull = null; // instanceof = isInstance 方法 if(isNull instanceof Integer){ System.out.println("isNull is instanceof Integer"); }else{ System.out.println("isNull is not instanceof Integer"); } }
這是 instanceof 操做符一個很重要的特性,使得對類型強制轉換檢查頗有用。string
靜態變量爲 null 調用靜態方法不會拋出 NullPointerException。由於靜態方法使用了靜態綁定。
所謂使用 Null-Safe 方法,其實就是多使用工具類提供的的靜態方法。以此來避免 NullPointerException。
private static String numbers; public static void main(String[] args) { String string = String.valueOf(numbers); //編譯經過 String s = numbers.toString(); //java.lang.NullPointerException }
你能夠使用 == 或者!=操做來比較 null 值,可是不能使用其餘算法或者邏輯操做,例如小於或者大於。跟SQL不同,在Java中null == null 將返回true。