if(str.isEmpty()){str = DEFAULT_STRING;}上面的代碼有時會給出一個NullPointerException。 如何重寫條件(從A-D中選擇),使這個問題不會發(fā)生?A:str == null && str.isEmpty()B:str == null || str.isEmpty()C:str.isEmpty() && str == nullD:str.isEmpty() || str == null 答案是B。我想知道B和D有什么區(qū)別?為什么D不對?
1 回答

一只名叫tom的貓
TA貢獻1906條經(jīng)驗 獲得超3個贊
推薦你去看看源碼
str == null 是看這個對象是否分配內(nèi)存空間, 如果沒有分配自然就是null , 也就是這個引用是null
str.isEmpty() 是判斷這個對象是否為空值, 但是需要這個對象引用不是null, 也就是說必須分配內(nèi)存空間, 才可以
public boolean isEmpty() { return count == 0; }
可以看上面源碼 這個方法是判斷這個對象的count == 0
你問題B 和 D的區(qū)別 , 一個是先判斷對象引用是否為null(也就是是否分配內(nèi)存空間) , 然后再判斷是否為空值; 這個是正確的;
另一個先判斷是否為空值, 然后再判斷對象引用是否為null, 但是 這個對象引用都是null, 這里在調(diào)用這個空引用的對象count屬性自然會報空指針異常
- 1 回答
- 0 關(guān)注
- 357 瀏覽
添加回答
舉報
0/150
提交
取消