標籤:null null 指標 java 異常 null 指標異常
在大型程式開放過程中,無論是SSH還是安卓,都需要對空值進行判斷,尤其是某個實體傳遞過來的值,但是,往往對於null的判斷條件沒寫好,導致null 指標異常。
對於任意的Object,判斷其是否為null,應該將Object xx==null寫在所有判斷條件的前頭,一個為null的東西,調用其自身的任何方法都會出現著名的java.lang.NullPointerExceptionnull 指標異常,包括Object.equals(null)都是會導致null 指標異常的。其實一個為null的東西,它只能執行Object xx==null,其餘任何的方法調用都是會出null 指標異常的。
不過,要注意一點,對於String xx="",xx就不為null了,雖然其值為空白,但是xx此時是經過實體化的對象,其可以調用isEmpty()方法來判斷其是否是"",與String xx=null有根本區別,String xx=null與Object xx=null一樣,都是只能執行Object xx==null,其餘任何的方法調用都是會出null 指標異常的。
用一個程式來說明這個問題,代碼如下:
public class javaNullPointTest {public static void ObjectIsNull(Object object) {// Object的判空// 正確的判空try {if (object == null) {System.out.println("null 指標異常沒有發生,為null");}} catch (NullPointerException e) {System.out.println("object == null不會導致null 指標異常發生");}// 錯誤的判空try {if (object.equals(null)) {System.out.println("null 指標異常沒有發生,為null");}} catch (NullPointerException e) {System.out.println("object.equals(null)導致null 指標異常發生");}}public static void StringIsNull(String string) {// String的判空try {if (string == null) {System.out.println("null 指標異常沒有發生,為null");} else if (string.isEmpty()) {System.out.println("null 指標異常沒有發生,值為空白“”");}} catch (NullPointerException e) {System.out.println("string==null不會null 指標異常發生");}// 錯誤的判空try {if (string.equals(null)) {System.out.println("null 指標異常沒有發生,為null");}} catch (NullPointerException e) {System.out.println("string.equals(null)導致null 指標異常發生");}}public static void main(String[] args) {Object nullObject = null;String nullString1 = "";String nullString2 = null;System.out.println("對於nullObject:");ObjectIsNull(nullObject);System.out.println("對於nullString1:");StringIsNull(nullString1);System.out.println("對於nullString2:");StringIsNull(nullString2);}}
運行結果如下:
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
【Java】對於空值null的判斷