Java - "IF语句"中"OR"的有效形式

jae*_*arp -1 java if-statement

boolean a = false, b = true, c = true;
if ( a == false || 
     b == false || 
     c == false ) { return true; }
Run Code Online (Sandbox Code Playgroud)

是否有任何有效的方法可以使用:?符号或您可以推荐的任何其他技巧来编写此声明?

Ste*_*n C 6

是否有使用以下方法编写此语句的有效方法:或?您可以推荐的符号或任何其他技巧?

这里没有效率问题.您编写的内容(很可能)将编译为最佳的本机代码(在Java中).

这里真正关心的是可读性和脆弱性.

可读性

比较这两种表达方式

if (a == false || b == false || c == false) {
    // Do something.
}
Run Code Online (Sandbox Code Playgroud)

if (!a || !b || !c) {
    // Do something.
}
Run Code Online (Sandbox Code Playgroud)

现在这是一个意见问题...但我认为第二种形式更具可读性,我认为大多数有经验的Java程序员会同意这一点.

脆弱性

问题:如果我不小心写了这个怎么办?

if (a == false || b = false || c == false) {
    // Do something.
}
Run Code Online (Sandbox Code Playgroud)

答:一个OBSCURE错误!

boolean类型是一个类型,其中编译器不会/不能告诉我,使用=替代的==是一个错误.

但是,只有==boolean操作数上使用时才会出现此问题.在大多数情况下,您不需要这样做.


luc*_*001 5

我想用较少代码的好方法可能是:

if ( !(a && b && c) ) { return true; }
Run Code Online (Sandbox Code Playgroud)