黑马程序员技术交流社区

标题: 请解析。。。 [打印本页]

作者: 李洋-    时间: 2013-12-12 21:26
标题: 请解析。。。
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呢?


作者: ysunday    时间: 2013-12-12 21:35
if(b=false)这句将b的值改成了 false继续往下判断,!b就是true了,符合条件的只有打印c的那个判断了
作者: 松子    时间: 2013-12-12 22:47
因为变量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");
}

作者: 熊猫86    时间: 2013-12-12 23:05
第一句的if语句真的很容易看错,b=false是赋值语句,如果换成b==false这才是判断b的值是否为false,而b=false是将b的值由true改为false,因此!b是true,最后的结果输出为c。还有,因为if语句中( )要放判断语句或者是boolean型的值,而b本身就是boolean型的变量,因此,if(b=false) 在括号内用赋值语句是合法的。
作者: jing迪    时间: 2013-12-13 00:12
第一句话是把true赋值给b
第二句话if里面却是把false赋值给b
然后b的值就是false   !false就是true所以条件成立就是c了
作者: Never__give_up    时间: 2013-12-13 22:48
这个考验的是赋值语句和关系运算符==之间的区别,b=false是给b从新赋值,所以
  1. if(b=false)和esle if(b)
复制代码
的值都是false,因此不对,而!b为true,所以输出为c。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2