第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

一個(gè)問題?有關(guān)||的應(yīng)用和空指針異常

一個(gè)問題?有關(guān)||的應(yīng)用和空指針異常

犯罪嫌疑人X 2019-05-23 19:53:52
if(str.isEmpty()){str=DEFAULT_STRING;}上面的代碼有時(shí)會(huì)給出一個(gè)NullPointerException。如何重寫條件(從A-D中選擇),使這個(gè)問題不會(huì)發(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不對(duì)?
查看完整描述

2 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

||或操作是只要其中一個(gè)值為真則整個(gè)表達(dá)式就為真,判定真與否的順序是從左至右的,只要有一個(gè)判定是真的那么其后面的判定就不會(huì)執(zhí)行了,比如你這里的str==null||str.isEmpty()首先判定str==null的真假,然后再判定str.isEmpty()的真假(從左至右判定)。當(dāng)判斷str==null為真時(shí),str.isEmpty()就不會(huì)執(zhí)行判定了(因?yàn)橹灰渲幸粋€(gè)為真,則整個(gè)表達(dá)式就為真)。所以B選項(xiàng)和D選項(xiàng)執(zhí)行的順序(判斷str==null和str.isEmpty()的順序)是不一樣的,B選項(xiàng)先判定str==null,D選項(xiàng)先判定str.isEmpty()。假如str就是null,B選項(xiàng)先判定str==null(為真),str.isEmpty()就不會(huì)執(zhí)行了,也就不會(huì)報(bào)空指針異常了。而D選項(xiàng)先判定str.isEmpty(),str為null,就會(huì)拋空指針異常??偨Y(jié):B選項(xiàng)執(zhí)行str.isEmpty()的條件是,str!=null;而D選項(xiàng)無論str是否為null,都會(huì)執(zhí)行str.isEmpty()。
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-23
?
BIG陽(yáng)

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊

關(guān)鍵詞:短路特性。表達(dá)式A||B,如果A已經(jīng)判斷為真,則這個(gè)表達(dá)式的值就確定了,不會(huì)再執(zhí)行和判斷B。同樣的還有A&&B,B為假的時(shí)候。
就這個(gè)題目來說,str==null||str.isEmpty()的意思就是,先判斷str是不是null,如果是null,這句肯定就是真了,后面半句就不執(zhí)行了,不執(zhí)行,自然就不會(huì)報(bào)錯(cuò)啦。
ps.話說我都給了關(guān)鍵詞了,百度一下嘛同學(xué)。。。
                            
查看完整回答
反對(duì) 回復(fù) 2019-05-23
  • 2 回答
  • 0 關(guān)注
  • 497 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)