Java--- 關於null的處理若干方法
相信空指標是平時最常見的錯誤了,下面認識 null ,有助於解決 NPE 問題。
nulll大小寫敏感
關於這個問題,其實是對面試時候手寫演算法題時候需要注意的問題。
null 它是 Java的關鍵字,它是大小寫敏感的,不能寫成 NULL,Null等等。
當然在現實工作中,現有市面上的流行編譯器一般會有報錯提示。
null 是任何引用型別的初始值
這裡需要注意是引用型別,基本資料型別的,int 預設初始值是 0;boolean 預設初始值是 false 等。
也就是說 Object 型別的預設初始值都是 null 。
null 是一種有特殊的值
null 既不是物件也不是資料型別,他只是一種特殊的值。
可以將它複製給任何引用型別的變數,這時並不會丟擲空指標異常。
但是注意,並不能賦值給基本資料型別的變數,因為持有 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 操作符一個很重要的特性,使得對型別強制轉換檢查很有用。
靜態變數為 null 呼叫靜態方法不會丟擲 NullPointerException。因為靜態方法使用了靜態繫結。
使用 Null-Safe 方法
所謂使用 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 的判斷
你可以使用 == 或者!=操作來比較 null 值,但是不能使用其他演算法或者邏輯操作,例如小於或者大於。跟SQL不一樣,在Java中null == null 將返回true。