開發中經常遇到從集合類List、Map中取出數據轉換為String的問題,這里如果處理不好,經常會遇到空指針異常java.lang.NullPointerException,在此總結一下常用轉換為String的方法,以及轉換后如何對其進行判null使用的問題。
Java中對象轉換為String的常用方法:
方法1、String objStr = (String) obj:
強制類型轉換,對象obj為null,結果也為null,但是obj必須保證其本質是String類型的值,即可轉換的值。例如,不能強制轉換 (String) 123
方法2、String objStr = obj.toString方法 :調用對象的toString方法,必須保證本類或者父類已經重寫了Object類的toString方法,如果沒有重寫toString方法,將默認調用Object類的toString方法,返回getClass().getName() + '@' + Integer.toHexString(hashCode()),並不是obj的實際字符串表示,同時還必須保證對象obj不能為null,否者調用toString方法會報空指針異常java.lang.NullPointerException。
方法3、String objStr =
String.valueOf(obj) : 對象obj為null,轉換結果為字符串
"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\" ");//執行 } }
轉:https://www.cnblogs.com/h4x0r-001/p/4398619.html