False boolean = True?

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

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

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

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

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

 if(b = true) 

哪个永远都会回归真实。 所以它总会打印出来。

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

在“if”语句中,您将值“true”赋给b。 您应该使用比较运算符“==”来检查该值。

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

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

if (b = true)将值true赋给b ,然后对该true值进行操作。 这就是类C语言的危险,如果你遗漏第二个=当你想要进行比较时,你会得到一个分配,而不是意想不到的结果。

这是因为它是一项任务。 你没有检查b,你只需要赋予它真实性。

可以认为int x有两个可能的值,1或0.如果x = 1,那么执行此操作。 否则,(x = 0)然后做其他事情。 布尔只是说它是一个条件,或者不是那个条件。