我在一本书中找到了这个代码,我在Netbeans中执行了它:
boolean b = false;
if(b = true) {
System.out.println("true");
} else {
System.out.println("false");
}
我只是不明白为什么这段代码的输出是真的, 请有人赐教, 感谢。
答案 0 :(得分:13)
它缺少双等号。所以它正在进行赋值而不是相等比较(并且记住,赋值的返回值是新值)。在大多数情况下,大多数类型不是布尔值的事实意味着结果不是布尔值,因此它对于if
语句而言变得非法,从而导致编译器错误。但是,由于此处的类型已经是布尔值,因此赋值会产生布尔值,因此安全检查失败。因此,b = true
表示为b
分配了值true
,这是if
语句返回并检查的值。
答案 1 :(得分:4)
这是因为if语句条件不是比较。这是一项任务:
if(b = true)
总是会返回true。因此它将始终打印true
。
如果您想进行比较,则需要使用==
。
答案 2 :(得分:2)
在“if”语句中,您将值“true”赋给b。您应该使用比较运算符“==”检查该值。
boolean b = false;
if(b == true)
{
System.out.println("true");
}
else
{
System.out.println("false");
}
答案 3 :(得分:1)
if(b = true)
这是真的,因为=是赋值运算符而不是相等运算符==
答案 4 :(得分:0)
if (b = true)
将值true
分配给b
,然后对该值进行操作。这就是类C语言的危险,如果你想要比较时省略第二个=
,你会得到一个分配,而且会产生意想不到的结果。
答案 5 :(得分:0)
这是因为它是一项任务。你没有检查b,你只需要赋予它真实。
答案 6 :(得分:0)
将int x视为具有2个可能的值,1或0.如果x = 1,则执行此操作。否则,(x = 0)然后做其他事情。布尔只是说它是一个条件,或者不是那个条件。