False boolean = True?

Mar*_*oui 5 java boolean

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

boolean b = false;
if(b = true) {
    System.out.println("true");
} else {
    System.out.println("false");
}
Run Code Online (Sandbox Code Playgroud)

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

Kir*_*oll 13

它缺少双等号.所以它正在进行赋值而不是相等比较(并且记住,赋值的返回值是新值).在大多数情况下,大多数类型不是布尔值的事实意味着结果不是布尔值,因此它对于if语句变得非法,从而导致编译器错误.但是,由于此处的类型已经是布尔值,因此赋值会产生布尔值,因此安全检查失败.因此,b = true表示b赋值true,这是由if语句返回和检查的值.