黑马程序员技术交流社区
标题:
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