黑马程序员技术交流社区

标题: 帮帮分析下 [打印本页]

作者: 奋发吧小白    时间: 2014-9-11 16:55
标题: 帮帮分析下
给定java代码如下,编译运行,结果是(      )
class Demo{
       publicstatic void main(String[] args)
       {
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");
}
}

我认为答案 :打印结果是b  
但是运行结果却是c  

if(b=false) 则跳过System.out.println("a");
然后去判断条件else if(b) 此时b = true 则执行System.out.println("b");
打印b
循环结束!
这样分析正确吗?


作者: hailong    时间: 2014-9-11 18:05
b=false中=是赋值运算,表示将false赋值给b,所以if(b)时b为false继续向下执行,!b为true,打印c
如果你将b=false改成b==false那么结果就是b了
作者: 尚志    时间: 2014-9-11 18:12
楼上正解,你用的是赋值运算……
作者: daoqin    时间: 2014-9-11 19:19
本帖最后由 daoqin 于 2014-9-11 19:20 编辑

建议这么写  if(false == b)  这样的话如果你少些一个等于号,程序会报错的!因为false是常量,不可改变的。这样就减少了漏写一个=的机率




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