黑马程序员技术交流社区
标题: 求解 正确答案 [打印本页]
作者: 0825王欢 时间: 2015-8-24 13:34
标题: 求解 正确答案
14.现有:
1. class Test2 f
2.public static void main(String [] args) {
3. boolean X= true;
4. boolean y=false;
5. short Z=20;
6.
7.if((x==true) && (y=true)) z++;
8. if((y==true) || (++z==22)) z++;
9.
10. System. out .println( "z="+z);
11. }
12. }
结果是什么?
A.Z=21
B. z=22
C. z=23
D. Z= 24
自己做感觉是C 老师给的答案是B 求大神解析
作者: 腹黑兔 时间: 2015-8-24 13:57
本帖最后由 腹黑兔 于 2015-8-24 13:58 编辑
if((y==true) || (++z==22)) z++;当判断到y==true的值是true后, 就不会执行后面(++z==22)语句
作者: zhangcheng0403 时间: 2015-8-24 14:03
的确是第二个,因为在第七行是判断结果是true(&&:运算符是短路但是第一个逻辑运算满足了是true,第二个逻辑运算也满足,如果第一个逻辑运算没有满足,就不走第二个逻辑运算了,因为直接就可判断出了结果是false,后面的就不进行了。&&只在第一个是false的情况下才发生短路,||只在第一个是true的情况下才发生短路),后面进行了自增运算z=21
第八行 是或的短路运算,因为此时y的值已是true,此时发生短路后面(++z==22),这步运算没有进行,直接进入后面的z++,结果是22
作者: 0825王欢 时间: 2015-8-24 14:06
谢谢 {:2_30:}
作者: 蓬头小道士 时间: 2015-8-24 14:34
if((x==true) && (y=true)) z++;中y=true是赋值语句
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |