關(guān)于Java String 類型轉(zhuǎn)換時(shí)null的問題

出處:cnblogs.com/panchanggui/p/10935335.html
開發(fā)中經(jīng)常遇到從集合類List、Map中取出數(shù)據(jù)轉(zhuǎn)換為String的問題,這里如果處理不好,經(jīng)常會遇到空指針異常java.lang.NullPointerException,在此總結(jié)一下常用轉(zhuǎn)換為String的方法,以及轉(zhuǎn)換后如何對其進(jìn)行判null使用的問題。
Java中對象轉(zhuǎn)換為String的常用方法:?
方法1、String objStr = (String) obj:??強(qiáng)制類型轉(zhuǎn)換,對象obj為null,結(jié)果也為null,但是obj必須保證其本質(zhì)是String類型的值,即可轉(zhuǎn)換的值。例如,不能強(qiáng)制轉(zhuǎn)換 (String) 123
方法2、String objStr =?obj.toString方法? ??:調(diào)用對象的toString方法,必須保證本類或者父類已經(jīng)重寫了Object類的toString方法,如果沒有重寫toString方法,將默認(rèn)調(diào)用Object類的toString方法,返回getClass().getName() + '@' + Integer.toHexString(hashCode()),并不是obj的實(shí)際字符串表示,同時(shí)還必須保證對象obj不能為null,否者調(diào)用toString方法會報(bào)空指針異常java.lang.NullPointerException。
方法3、String objStr =?String.valueOf(obj)?:? ? 對象obj為null,轉(zhuǎn)換結(jié)果為字符串"null",否則,返回 obj.toString()?的值。注意,如果為obj為null,這里轉(zhuǎn)換后的值已經(jīng)是字符串的“null”,判空不能再用 obj == nulll,而應(yīng)該用 str.equals("null")。
已經(jīng)知道obj為String類型的情況下,可以直接使用方法1轉(zhuǎn)換為String,轉(zhuǎn)換為String后判null條件為:if (objStr !=?null)
慎用方法2
對于不知道具體類型的情況下,可以使用方法3,只是轉(zhuǎn)換后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 ");//執(zhí)行
????}
????if?(strByString != null?&& strByString.equals("null")) {
????????System.out.println("strByString is not null, is \"null\" ");//不執(zhí)行
????}
????if?(strByStringValueOf == null) {
????????System.out.println("strByStringValueOf is null ");//不執(zhí)行
????}
????if?(strByStringValueOf != null?&& strByStringValueOf.equals("null")) {
????????System.out.println("strByStringValueOf is not null, is \"null\" ");//執(zhí)行
????}
}覺得不錯點(diǎn)個“在看”哦!
