这两道题怎解释?为什么答案是这样的?

BenLadeng5225 2002-11-10 10:03:10
15. Consider the following code:



String s = null;



Which code fragments cause an object of type NullPointerException to be

thrown?



A. if((s!=null) & (s.length()>0))

B. if((s!=null) &&(s.length()>0))

C. if((s==null) | (s.length()==0))

D. if((s==null) || (s.length()==0))



AC.





16. Consider the following code:



String s = null;



Which code fragments cause an object of type NullPointerException to be

thrown?



A. if((s==null) & (s.length()>0))

B. if((s==null) &&(s.length()>0))

C. if((s!=null) | (s.length()==0))

D. if((s!=null) || (s.length()==0))



ABCD.

...全文
25 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
BenLadeng5225 2002-11-10
  • 打赏
  • 举报
回复
谢谢!
hotenM 2002-11-10
  • 打赏
  • 举报
回复
从左到右,执行s.length()就会nullpointer
但是
到&&的时候,必须两面为真才为真
如果&&前面为false,后面就不再执行
||正好相反,前面为true,那肯定表达市为true,后面的不再执行
Winuxava 2002-11-10
  • 打赏
  • 举报
回复
1.& 和 | 是按位与、或。所以两边的语句都会得到执行。
那么当执行 s.length() 时,就会抛出异常。
而 && 逻辑与,当判断第一个语句(即 s!=null)不成立时,则不必判断第二
个语句,if((s!=null) &&(s.length()>0))也一定不可能成立,所以s.length()不用执行。
|| 是逻辑或,判断到第一个语句 s==null 成立,则不论第二个语句什么结果,if((s!=null) &&(s.length()>0)) 也一定成立,所以也不必执行第二个语句。

2.原理同上

50,639

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧