False boolean = True?

时间:2011-10-25 00:41:55

标签: java boolean

我在一本书中找到了这个代码,我在Netbeans中执行了它:

boolean b = false;
if(b = true) {
    System.out.println("true");
} else {
    System.out.println("false");
}

我只是不明白为什么这段代码的输出是真的, 请有人赐教, 感谢。

7 个答案:

答案 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)然后做其他事情。布尔只是说它是一个条件,或者不是那个条件。