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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

下面代码为什么答案为 c ,   不是为b 吗?

class Demo
{
        public static 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");
                }

        }
}

21 个回复

正序浏览
b=false是把false赋值给b了,所以应该是c
回复 使用道具 举报
编译没问题,逻辑有问题,做这个赋值的意义是什么,而且有的人是想做判断的,把“==”写成“=”了,最后还能编译通过,但程序想要运行的效果和自己期待的不同,到时肯定郁闷
回复 使用道具 举报
这里赋值的时候false是作为char类型,赋给b的
回复 使用道具 举报
楼上说的对。。。。。。。。。
回复 使用道具 举报
赋值时boolean型的是可以呀
回复 使用道具 举报
1158147908 来自手机 中级黑马 2015-12-31 20:54:58
17#
可以有赋值语句呀
回复 使用道具 举报
第一、if (b = false),是这样的:
1.先将 false的值赋给b,此时的b就成了false
2.然后 if(b),其实就是if(false)

第二、关于"="赋值运算符
1.表示把右边的值赋给左边
2.b=false,由于b是boolean类型的,false也是boolean类型的,所以赋值会成功,而且是if要的boolean类型,
所以,编译会成功。

第三、if()括号中要的是一个boolean值,不局限于形式,只要最后的结果:
1:可以是这样boolean b = true;
     if(b){}  或者  if(!b){}
2:可以是这样的 int a = 2, b = 3;
   if(a==b){}

最后,如果楼主还是不太理解的话,我建议你输出一下,看看结果到底的是什么,你也可以把你所有困惑的运算都输出一下,看看运算结果
boolean b = true;
System.out.println(b = false);
回复 使用道具 举报
huaduwuzhe 来自手机 中级黑马 2015-12-31 08:37:29
15#
楼上说的很清楚了,if的判断语句必须是boolean的,false本身是boolean的,赋给变量没有错误,但一般不建议这样赋值,这样赋值没有实际意义。要判断是不是错误应用if(b==false),否则就不如直接用if(false)
回复 使用道具 举报
可以赋值 付的值 必须是布尔类型的 才可以
回复 使用道具 举报
是变量 不是定量
回复 使用道具 举报
yifuyue 来自手机 中级黑马 2015-12-30 22:45:13
12#
结果是boolean
回复 使用道具 举报
窃贼 中级黑马 2015-12-30 22:37:38
11#
因为结果还是boolean
回复 使用道具 举报
注意到第一个是赋值,并且知道b的值已经改变,就没有问题了!
回复 使用道具 举报
原来也可以直接赋值的,长见识了
回复 使用道具 举报
NUMONE 中级黑马 2015-12-29 21:52:47
8#
b是boolean 时,在 if 语句中可以  if(b=false),学习了 ,把false的值赋给布尔型b
回复 使用道具 举报
if(b=false)是假,if(b)也是假,if(!b)才是真
回复 使用道具 举报
luyang18 来自手机 中级黑马 2015-12-29 12:15:17
地板
楼上的解析很清楚
回复 使用道具 举报
楼上解释的清楚了
回复 使用道具 举报
看里面的结果, 结果是boolean型就行了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马