黑马程序员技术交流社区

标题: if 语句里面有赋值语句是不是错的?? [打印本页]

作者: n_Nie1991    时间: 2015-12-28 22:23
标题: if 语句里面有赋值语句是不是错的??
下面代码为什么答案为 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");
                }

        }
}
作者: 愿爱无忧    时间: 2015-12-28 22:31
你说的对,不是比较运算,而是赋值,b的值就变成了false,所以  if(b=false)是假,if(b)也是假,if(!b)才是真
作者: anythingOK    时间: 2015-12-28 22:47
因为比较运算的结果就是boolean值,你直接给它赋了个boolean值,当然不报错了
作者: 隔壁老猫    时间: 2015-12-28 23:09
看里面的结果, 结果是boolean型就行了
作者: 一大把手    时间: 2015-12-29 11:05
楼上解释的清楚了
作者: luyang18    时间: 2015-12-29 12:15
楼上的解析很清楚
作者: 小新没蜡笔    时间: 2015-12-29 21:22
if(b=false)是假,if(b)也是假,if(!b)才是真
作者: NUMONE    时间: 2015-12-29 21:52
b是boolean 时,在 if 语句中可以  if(b=false),学习了 ,把false的值赋给布尔型b
作者: n_Nie1991    时间: 2015-12-29 22:15
原来也可以直接赋值的,长见识了
作者: Java1211张美红    时间: 2015-12-29 22:23
注意到第一个是赋值,并且知道b的值已经改变,就没有问题了!
作者: 窃贼    时间: 2015-12-30 22:37
因为结果还是boolean
作者: yifuyue    时间: 2015-12-30 22:45
结果是boolean
作者: 程程程程程92    时间: 2015-12-31 00:40
是变量 不是定量
作者: qinrongchang    时间: 2015-12-31 07:27
可以赋值 付的值 必须是布尔类型的 才可以
作者: huaduwuzhe    时间: 2015-12-31 08:37
楼上说的很清楚了,if的判断语句必须是boolean的,false本身是boolean的,赋给变量没有错误,但一般不建议这样赋值,这样赋值没有实际意义。要判断是不是错误应用if(b==false),否则就不如直接用if(false)
作者: Hi刘腾    时间: 2015-12-31 12:40
第一、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);
作者: 1158147908    时间: 2015-12-31 20:54
可以有赋值语句呀
作者: yifuyue    时间: 2016-1-1 21:11
赋值时boolean型的是可以呀
作者: 蔡泽杰    时间: 2016-1-1 23:07
楼上说的对。。。。。。。。。
作者: 随缘的影子    时间: 2016-1-1 23:11
这里赋值的时候false是作为char类型,赋给b的
作者: itheima2016    时间: 2016-4-26 21:28
编译没问题,逻辑有问题,做这个赋值的意义是什么,而且有的人是想做判断的,把“==”写成“=”了,最后还能编译通过,但程序想要运行的效果和自己期待的不同,到时肯定郁闷
作者: Master_Yu    时间: 2016-4-26 22:20
b=false是把false赋值给b了,所以应该是c




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