关于java:False boolean = True?

False boolean = True?

我在一本书中找到了这段代码,并在NetBeans中执行了它:

1
2
3
4
5
6
boolean b = false;
if(b = true) {
    System.out.println("true");
} else {
    System.out.println("false");
}

我只是不明白为什么这段代码的输出是真的,有人能开导我吗?谢谢。


它缺少双等号。因此,它执行的是赋值而不是相等比较(记住,赋值的返回值是新值)。在大多数情况下,大多数类型都不是布尔型,这意味着结果不是布尔型,因此对于if语句来说,它是非法的,从而导致编译器错误。但是,由于这里的类型已经是布尔值,因此赋值将导致布尔值,因此安全检查失败。因此,b = true意味着b被赋予值true,这是由if语句返回并检查的值。


这是因为if语句条件不是比较条件。这是一项任务:

1
if(b = true)

它将永远返回真。所以它总是打印true

如果要进行比较,需要使用==


在"if"语句中,将值"true"分配给b。应使用比较运算符"=="检查该值。

1
2
3
4
5
6
7
8
9
10
boolean b = false;

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

1
 if(b = true)

这是真的,因为=是赋值运算符而不是相等运算符==


想想int x有2个可能的值,1或0。如果x=1,则执行此操作。否则,(x=0),再做点别的。布尔值只是说它要么是一个条件,要么不是那个条件。


因为这是一项任务。你不在B上做检查,你只要给它赋真。


if (b = true)将值true赋值给b,然后作用于该真实值。这就是类C语言的危险所在,如果你不考虑第二个=,当你打算进行比较时,你会得到一个任务,一个意想不到的结果。