A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0825王欢 中级黑马   /  2015-8-24 13:34  /  687 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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   求大神解析

4 个回复

倒序浏览
本帖最后由 腹黑兔 于 2015-8-24 13:58 编辑

if((y==true) ||  (++z==22)) z++;当判断到y==true的值是true后, 就不会执行后面(++z==22)语句
回复 使用道具 举报
的确是第二个,因为在第七行是判断结果是true(&&:运算符是短路但是第一个逻辑运算满足了是true,第二个逻辑运算也满足,如果第一个逻辑运算没有满足,就不走第二个逻辑运算了,因为直接就可判断出了结果是false,后面的就不进行了。&&只在第一个是false的情况下才发生短路,||只在第一个是true的情况下才发生短路),后面进行了自增运算z=21
第八行 是或的短路运算,因为此时y的值已是true,此时发生短路后面(++z==22),这步运算没有进行,直接进入后面的z++,结果是22
回复 使用道具 举报
谢谢   {:2_30:}  
回复 使用道具 举报
if((x==true)  &&  (y=true))  z++;中y=true是赋值语句
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马