当前位置: 技术问答>java相关
这两道题怎解释?为什么答案是这样的?
来源: 互联网 发布时间:2015-10-27
本文导语: 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.l...
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.
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.
|
1.& 和 | 是按位与、或。所以两边的语句都会得到执行。
那么当执行 s.length() 时,就会抛出异常。
而 && 逻辑与,当判断第一个语句(即 s!=null)不成立时,则不必判断第二
个语句,if((s!=null) &&(s.length()>0))也一定不可能成立,所以s.length()不用执行。
|| 是逻辑或,判断到第一个语句 s==null 成立,则不论第二个语句什么结果,if((s!=null) &&(s.length()>0)) 也一定成立,所以也不必执行第二个语句。
2.原理同上
那么当执行 s.length() 时,就会抛出异常。
而 && 逻辑与,当判断第一个语句(即 s!=null)不成立时,则不必判断第二
个语句,if((s!=null) &&(s.length()>0))也一定不可能成立,所以s.length()不用执行。
|| 是逻辑或,判断到第一个语句 s==null 成立,则不论第二个语句什么结果,if((s!=null) &&(s.length()>0)) 也一定成立,所以也不必执行第二个语句。
2.原理同上
|
从左到右,执行s.length()就会nullpointer
但是
到&&的时候,必须两面为真才为真
如果&&前面为false,后面就不再执行
||正好相反,前面为true,那肯定表达市为true,后面的不再执行
但是
到&&的时候,必须两面为真才为真
如果&&前面为false,后面就不再执行
||正好相反,前面为true,那肯定表达市为true,后面的不再执行