黑马程序员技术交流社区

标题: 求解 正确答案 [打印本页]

作者: 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