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