比较 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){}
这条语句只会做条件检查。
就原始布尔值而言,
有什么区别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){}
这条语句只会做条件检查。