關於Java String 類型轉換時null的問題


開發中常常遇到從集合類List、Map中取出數據轉換爲String的問題,這裏若是處理很差,常常會遇到空指針異常java.lang.NullPointerException,在此總結一下經常使用轉換爲String的方法,以及轉換後如何對其進行判null使用的問題。
java

Java中對象轉換爲String的經常使用方法: 

方法一、String objStr = (String) obj:    強制類型轉換,對象obj爲null,結果也爲null,可是obj必須保證其本質是String類型的值,便可轉換的值。例如,不能強制轉換 (String) 123
方法二、String objStr = obj.toString方法    :調用對象的toString方法,必須保證本類或者父類已經重寫了Object類的toString方法,若是沒有重寫toString方法,將默認調用Object類的toString方法,返回getClass().getName() + '@' + Integer.toHexString(hashCode()),並非obj的實際字符串表示,同時還必須保證對象obj不能爲null,否者調用toString方法會報空指針異常java.lang.NullPointerException。
方法三、String objStr = String.valueOf(obj) :    對象objnull,轉換結果爲字符串"null"不然,返回 obj.toString() 的值。注意,若是爲obj爲null,這裏轉換後的值已是字符串的「null」,判空不能再用 obj == nulll,而應該用 str.equals("null")。
 
已經知道obj爲String類型的狀況下,能夠直接使用方法1轉換爲String,轉換爲String後判null條件爲:if (objStr != null)
慎用方法2
對於不知道具體類型的狀況下,能夠使用方法3,只是轉換後String的判null條件改成:if (!objStr.equals('null'))
 

測試代碼:

 

public static void testStringNull() {
    //String, toString, String.valueOf()
    Object obj = null;
    
    String strByString = (String) obj;
//        String strByToString = obj.toString();    //toString 必須保證不爲null,不然java.lang.NullPointerException
    String strByStringValueOf = String.valueOf(obj);
    System.out.println("strByString="+strByString+", strByStringValueOf="+strByStringValueOf);
    if (strByString == null ) {
        System.out.println("strByString is null ");//執行
    }
    if (strByString != null &&  strByString.equals("null")) {
        System.out.println("strByString is not null, is \"null\" ");//不執行
    }
    if (strByStringValueOf == null) {
        System.out.println("strByStringValueOf is null ");//不執行
    }
    if (strByStringValueOf != null && strByStringValueOf.equals("null")) {
        System.out.println("strByStringValueOf is not null, is \"null\" ");//執行
    }
}
相關文章
相關標籤/搜索