首页 > 试题广场 >

Which code fragments cause an

[不定项选择题]

String s=null;

下面哪个代码片段可能会抛出NullPointerException?
  • if((s!=null)&(s.length()>0))
  • if((s!=null)&&(s.length()>0))
  • if((s==null)|(s.length()==0))
  • if((s==null)||(s.length()==0))
本题考察的是& 和 &&, | 和 || 的区别,& 和 | 没有短路功能,即前面表达式的结果无论真假都执行后面表达式。
发表于 2019-04-02 08:53:31 回复(0)
更多回答
推荐
答案:AC
s为null,因此只要调用了s.length()都会抛出空指针异常。因此这个题目就是考察if语句的后半部分会不会执行。
A,单个与操作的符号& 用在整数上是按位与,用在布尔型变量上跟&&功能类似,但是区别是无论前面是否为真,后面必定执行,因此抛出异常
B,与操作,前半部分判断为假,后面不再执行
C,这里跟 & 和&& 的区别类似,后面必定执行,因此抛出异常
D,或语句,前面为真,整个结果必定为真,后面不执行
编辑于 2015-02-04 17:25:02 回复(9)
AC.
String为引用类型,如果对象为null,也就是说这个对象都不存在了,再去调用对象的相关方法,肯定会报空指针异常。这里调用了String类的length()方法
&&和||具有短路的效果,在进行&&时,如果&&前的是false,那么&&后的不再执行,直接返回false,同理||也一样。所以BD的s.length()不会被执行,AC会抛出空指针异常.
发表于 2015-08-17 16:07:28 回复(4)
|  :检测ture;不具备短路功能,会检查每一个条件,表达式中只要一个ture 就整体返回true
|| :检测true;具备短路功能,一遇到true,就返回true;
&:检测false;同理上;
&&:检测false;同理上;
发表于 2017-01-07 09:59:20 回复(3)
&和|为非短路运算符,左和右式都会被执行。
发表于 2018-09-02 08:37:31 回复(4)

我觉得这是一道考英文水平的题

发表于 2018-09-01 00:00:51 回复(1)
|| 与 && 都是短路功能:
前者,表达式一为真,表达式二不执行。
后者,表达式一位假,表达式二不执行。
| 与 &不具备短路功能

发表于 2018-08-16 15:37:19 回复(0)
答案AC
由于s为null,故s.length()会抛出异常;而&和|为位操作符,故s.length()一定会执行。
选项B:s!=null为假,s.length()不会执行
选项D:s==null为真,s.length()不会执行

发表于 2015-01-04 21:00:17 回复(0)
答案:A C
解析:由于&& 和 || 具有短路效果,所以后半段不会执行,s.length()也就不会出现空指针异常。
发表于 2016-07-08 13:28:01 回复(0)
s为null,因此只要调用了s.length()都会抛出空指针异常。因此这个题目就是考察if语句的后半部分会不会执行。 A,单个与操作的符号& 用在整数上是按位与,用在布尔型变量上跟&&功能类似,但是区别是无论前面是否为真,后面必定执行,因此抛出异常 B,与操作,前半部分判断为假,后面不再执行 C,这里跟 & 和&& 的区别类似,后面必定执行,因此抛出异常 D,或语句,前面为真,整个结果必定为真,后面不执行
发表于 2021-11-06 11:18:57 回复(0)
这题两个点: 1.抛出空指针异常,已知s=null,s.length()>0,=0自然会触发空指针异常 2.&和&&运算符:&前后两个判断语句都要运算,然后再与, &&前后两个判断,先判断前一个,前一个为假,后面一个就不看了。 或运算类似。
发表于 2021-01-31 19:46:44 回复(0)
&、| 判断俩条件, &&前条件为假则后继不判断, || 前条件为真则后继不判断。 null时运作了length就会抛出这个NullPointerException
编辑于 2019-03-05 08:16:25 回复(0)
选AC,

只有对象为null时,调用方法才可能出现空指针异常。
BD中||与&&都是逻辑运算符,有短路的功能。
发表于 2018-06-27 09:00:19 回复(0)
&&和 ||等逻辑运算符 存在短路,而&和| 位运算符 不存在短路
发表于 2017-04-11 20:36:29 回复(0)
&&为短路与,前面一个条件判断为false,则不再判断第二个条件;||为短路或,前面一个条件判断为true,则不再判断第二个条件。&和|需要逐一判断。
发表于 2022-07-19 11:21:05 回复(0)
||和&&会短路,|&用于逻辑运算时不会短路~
发表于 2022-04-15 16:27:20 回复(0)
||  :如果前半句为真就不会执行后半句
&&: 如果前半句为假则不会执行后面。
|,&就是两个语句都会全部执行。
但因为s为null,如果执行s.length()就会抛异常。
发表于 2022-03-14 21:37:54 回复(0)
记住|在满足条件后还会继续执行,&&||不会即可
发表于 2021-10-04 23:13:16 回复(0)
只要调用length就会抛出异常
发表于 2021-09-01 09:16:59 回复(0)
s.length()会抛出空指针异常
发表于 2021-08-23 09:31:02 回复(0)
原来是length报的空指针异常 还考查了短路原则
发表于 2021-04-06 12:48:26 回复(0)
长短路我记住了,与或我记错了
发表于 2021-03-29 21:04:08 回复(0)