1. 程式人生 > 實用技巧 >java.lang.NullPointerException出現原因及解決方法java.lang.NullPointerException解決方法

java.lang.NullPointerException出現原因及解決方法java.lang.NullPointerException解決方法

java.lang.NullPointerException出現的幾種原因

1、字串變數未初始化
2、介面型別的物件沒有用具體的類初始化,比如:
Map map // 會報錯
Map map = new Map(); //則不會報錯了
3、當一個物件的值為空時,你沒有判斷為空的情況。
4、字串與文字的比較,文字可以是一個字串或Enum的元素,如下會出現異常
String str = null;
if(str.equals(“Test”)){
//這裡的程式碼將不會被觸發,因為會丟擲java.lang.NullPointerException異常。
}
5、優先使用String.valueOf()方法代替toString()
當程式程式碼需要物件的字串表示形式時,請避免使用該物件的toString方法。如果你的物件的引用等於null,NullPointerException則會丟擲,使用靜態String.valueOf方法,該方法不會丟擲任何異常並列印
"null" 6、class被聲明瞭型別, 預設 class = null; 這樣在呼叫class中方法的時候系統只能給你個空指標異常, 給其例項化就好了:class = new Class(); 7、返回null,方法的返回值不要定義成為一般的型別,而是用陣列。這樣如果想要返回null的時候就能避免許多不必要的NullPointerException


總之,NullPointerException由RuntimeException派生出來,是一個執行時異常。其意指可能會在執行的時候才會被丟擲,一個變數是null,及只有其名,沒有實值內容,也沒分配記憶體,當你要去取他的長度,對他進行操作就會出現NullPointException,所以宣告變數時最好給它分配好記憶體空間,給予賦值,例如拿該變數與一個值比較時,要麼先做好該異常的處理要麼給它進行判斷先: if (str !=null && str “”){ …}

判斷一個String的例項s是否等於“a”時,不要寫成s.equals(“a”),這樣容易拋NullPointerException,而寫成"a".equals(s)就可以避免這個問題,不過對變數先進行判空後再進行操作更好,儘量避免返回null,方法的返回值不要定義成為一般的型別,用陣列。這樣如果想要返回null的時候,就返回一個沒有元素的陣列。就能避免許多不必要的NullPointerException

下圖為異常分佈圖: