黑马程序员技术交流社区

标题: 求大神告诉我答案.... [打印本页]

作者: 潜力良驹    时间: 2015-7-29 22:03
标题: 求大神告诉我答案....
下面程序执行的结果是?(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了跟布尔条件不符合啊为什么还能执行?


作者: wudigod12    时间: 2015-7-29 22:04
b=false b是false
作者: 潜力良驹    时间: 2015-7-29 22:45
正确答案是C.....
作者: 潜力良驹    时间: 2015-7-29 22:46
wudigod12 发表于 2015-7-29 22:04
b=false b是false

为什么b是false...前面不是定义b是true吗?
作者: 嘉嘉    时间: 2015-7-29 23:05
if(b=false):为b重新附值false
作者: 逆光奔跑    时间: 2015-7-29 23:05
if(b=false),括号内b应经被赋值为false,所以答案是C
作者: boboyuwu    时间: 2015-7-29 23:37
不执行b变成了false了执行!b那个
作者: 潜力良驹    时间: 2015-7-30 20:44
3174918418 发表于 2015-7-29 23:00
在"if(b=false)"的時候 b已被賦值為false了,
而"else if(b)"可以看作 "else if(b == true)",
所以答案不是b ...

太阴了....两个等号是判断语句  一个等号是赋值....现在才想到
作者: dadai5ai    时间: 2015-7-30 20:57
因为 if(b=false) 中的“b=false”是复制语句,不是判断语句,这时候b已经是false了
作者: 潜力良驹    时间: 2015-7-30 20:58
dadai5ai 发表于 2015-7-30 20:57
因为 if(b=false) 中的“b=false”是复制语句,不是判断语句,这时候b已经是false了 ...

嗯 脑子笨   哎




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