亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一個問題?有關||的應用和空指針異常

一個問題?有關||的應用和空指針異常

慕萊塢森 2018-08-13 06:10:15
if(str.isEmpty()){str = DEFAULT_STRING;}上面的代碼有時會給出一個NullPointerException。 如何重寫條件(從A-D中選擇),使這個問題不會發生?A:str == null && str.isEmpty()B:str == null || str.isEmpty()C:str.isEmpty() && str == nullD:str.isEmpty() || str == null 答案是B。我想知道B和D有什么區別?為什么D不對?
查看完整描述

1 回答

?
一只名叫tom的貓

TA貢獻1906條經驗 獲得超3個贊

推薦你去看看源碼

str == null  是看這個對象是否分配內存空間,  如果沒有分配自然就是null ,  也就是這個引用是null  

str.isEmpty() 是判斷這個對象是否為空值, 但是需要這個對象引用不是null, 也就是說必須分配內存空間, 才可以

public boolean isEmpty() {    return count == 0;
}

可以看上面源碼 這個方法是判斷這個對象的count == 0 

 

 

你問題B 和 D的區別  , 一個是先判斷對象引用是否為null(也就是是否分配內存空間) , 然后再判斷是否為空值;  這個是正確的;

另一個先判斷是否為空值, 然后再判斷對象引用是否為null,  但是 這個對象引用都是null, 這里在調用這個空引用的對象count屬性自然會報空指針異常


查看完整回答
反對 回復 2018-08-22
  • 1 回答
  • 0 關注
  • 345 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號