比较 if 语句中的原始布尔值

Comparing primative booleans in if statements

就原始布尔值而言,

有什么区别
if(someBoolean == false){}

if(someBoolean = false){}

我写了后者(在 Eclipse 中)期望抛出错误但 none 是。

someBoolean = false 将 false 的值分配给该布尔值,而不是实际比较它是否为 false。

=分配

==比较

if(someBoolean=false)会将false设置为someBoolean然后returnsomeBoolean,然后if语句判断someBoolean值,所以它会编译好。

但是这样的代码无法编译:

int val = 2;
if(val = 3){
}

会编译错误:

InCompatible Types:Required:boolean,Found

因为它的return值是int,不能改成if语句需要的boolean类型

==用于比较

=用于赋值。

因此,在第一种情况下,您正在比较值,而在第二种情况下,您正在分配。两条语句都将编译并执行成功。

但是,如果正在寻找一种在 if 语句中使用它的有效方法,那么您可以简单地执行以下操作:

if(someBoolean)   //for checking true

if(!someBoolean)   //for checking false

someBoolean == false 正在比较 returns 一个布尔值 someBoolean = false 也在为 returns 分配一个布尔值

if(someBoolean = false){}

上面的语句先给boolean变量赋值,然后进行条件检查。语句没有错误。

if(someBoolean == false){}

这条语句只会做条件检查。