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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李洋- 中级黑马   /  2013-12-12 21:26  /  1974 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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");
}
以上程序为什么输出的是C 而不是b呢?

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 今日加分已经达到上限。请明天再来试试!.

查看全部评分

5 个回复

倒序浏览
if(b=false)这句将b的值改成了 false继续往下判断,!b就是true了,符合条件的只有打印c的那个判断了
回复 使用道具 举报 0 1
因为变量b 定义在if条件句外面的,在整个if条件句里都能够使用。

boolean b=true;
if(b=false)  //false赋值给b,b的值就从初识的true就变成了false,所以括号里是false
{
    System.out.println("a");
}
else if(b)  //因为b已经是false,所以这里也不执行
{
    System.out.println(b);  
}
else if(!b)  //b是false,那 !b 就是true,所以输出结果是c.
{
    System.out.println("c");
}
else
{
    System.out.println("d");
}

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 很认真!!!谢谢~

查看全部评分

回复 使用道具 举报
第一句的if语句真的很容易看错,b=false是赋值语句,如果换成b==false这才是判断b的值是否为false,而b=false是将b的值由true改为false,因此!b是true,最后的结果输出为c。还有,因为if语句中( )要放判断语句或者是boolean型的值,而b本身就是boolean型的变量,因此,if(b=false) 在括号内用赋值语句是合法的。

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 如果有例子就更好了!

查看全部评分

回复 使用道具 举报
第一句话是把true赋值给b
第二句话if里面却是把false赋值给b
然后b的值就是false   !false就是true所以条件成立就是c了

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 还不够哦~

查看全部评分

回复 使用道具 举报
这个考验的是赋值语句和关系运算符==之间的区别,b=false是给b从新赋值,所以
  1. if(b=false)和esle if(b)
复制代码
的值都是false,因此不对,而!b为true,所以输出为c。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马