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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋玉 中级黑马   /  2014-2-9 14:13  /  1834 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宋玉 于 2014-2-13 01:15 编辑

boolean b = true;
if(b=false)  
        System.out.println("a");
else if(b)
        System.out.println("b");
else if(!b)
        System.out.println("c");
else
        System.out.println("d");
上面程序可以编译运行,我想请大家帮我解释一下
if(b=false)  
为什么可以编译通过,这样写也可以吗?这么写是什么意思啊
               

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

10 个回复

倒序浏览
b=false是在为b赋值,因为b是boolean类型,所以if(b=false)就相当 if(false)一样,当然可以编译通过

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
if(b = false)可以通过是应为这句boolean b = true;前面把b的类型定义成了boolean类型此时在()里,先进行赋值运算b = false;然后才进行if(b)的判断,毕竟if的判断只有两种情况if(false)或者if(true);

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
是将 false赋值给了b,导致b现在的值成了false,所以第一个if(b=false)  就是if(false),第二个else if(b),也是if(false),这两个都不能运行到,只有当if(true)时才可以运行后面的语句。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
=是赋值得意思,这里就相当于if b = 0;的意思
回复 使用道具 举报
if(b=false)------>就是if(false)啊
回复 使用道具 举报
if(b=false)的意思就是把false赋给b,因为是复制操作所以编译器是不会报错的,编译器只会判断b被赋值以后的真或者假...
回复 使用道具 举报
boolean b = true;
if(b=false)  //这个当然可以通过啊,(b=false)也是表达式啊。把false赋值给b
        System.out.println("a"); //假不打印a
else if(b)
        System.out.println("b"); //假不打印b
else if(!b) //!是异或,假异或等于真
        System.out.println("c"); //真打印c
else
        System.out.println("d");  //上面有个是“真”的所以这里也不打印d

答案是:c
if( )和else if( )括号中的表达式的结果必须是布尔型的(即 ture 或 false)。这点是java规定的。
你上面 if(b=false) 结果b=false是假,false是布尔型的,符合规定所以没什么问题,当然可以编译并执行。

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报 1 0
本帖最后由 杨殿生 于 2014-2-9 19:34 编辑

不会通过我刚运行完 你这是表达是if()需要用boolean型的

QQ图片20140209193328.jpg (105.93 KB, 下载次数: 102)

QQ图片20140209193328.jpg
回复 使用道具 举报
if(){}是判断语句,只要()里的结果为true,那么{}里的代码就会执行,否则就不执行直接往下继续执行。你这里的if(b = false),是判断表达式: b = false的结果是否为真,这里把false 的值赋给了 b,所以()里的结果为false,{} 不会执行。相当效果if(false)

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
jkenny 发表于 2014-2-9 19:16
boolean b = true;
if(b=false)  //这个当然可以通过啊,(b=false)也是表达式啊。把false赋值给b
        ...

同意观点,=在java里是赋值的意思,
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马