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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 潜力良驹 中级黑马   /  2015-7-29 22:03  /  819 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面程序执行的结果是?(B)C Why?
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");
A.        a   
B.        true  
C.        c
D.        d

为什么是C啊....我知道if(b==false)这句不执行,不是应该执行else if(b)么? b不就是true了么...为什么是执行else if(!b) !b不就是false了吗?false了跟布尔条件不符合啊为什么还能执行?

11 个回复

倒序浏览
b=false b是false
回复 使用道具 举报
正确答案是C.....
回复 使用道具 举报

为什么b是false...前面不是定义b是true吗?
回复 使用道具 举报
本帖最后由 3174918418 于 2015-7-30 20:52 编辑

在"if(b=false)"的時候 b已被賦值為false了,
而"else if(b)"可以看作 "else if(b == true)",
所以答案不是b, //這時b == false
而"else if(!b)"時, 判斷"b!=true" -> true
所以是c
回复 使用道具 举报
if(b=false):为b重新附值false
回复 使用道具 举报
if(b=false),括号内b应经被赋值为false,所以答案是C
回复 使用道具 举报
不执行b变成了false了执行!b那个
回复 使用道具 举报
3174918418 发表于 2015-7-29 23:00
在"if(b=false)"的時候 b已被賦值為false了,
而"else if(b)"可以看作 "else if(b == true)",
所以答案不是b ...

太阴了....两个等号是判断语句  一个等号是赋值....现在才想到

点评

加油。  发表于 2015-7-30 20:49
回复 使用道具 举报
因为 if(b=false) 中的“b=false”是复制语句,不是判断语句,这时候b已经是false了
回复 使用道具 举报
dadai5ai 发表于 2015-7-30 20:57
因为 if(b=false) 中的“b=false”是复制语句,不是判断语句,这时候b已经是false了 ...

嗯 脑子笨   哎
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马