Java if语句和布尔表达式

时间:2018-11-13 00:47:46

标签: java if-statement boolean-logic boolean-expression

有一个基本的if语句问题,所以我在Java中有一个if语句,如下所示:

if (
    !isOmitted(word,map.get(word.length()+1))     &&
    !isInserted(word,map.get(word.length()-1))    &&
    !isTransposed(word,map.get(word.length()))    &&
    !isSubstituted(word,map.get(word.length()))   &&
    !isCapital(word,map.get(word.length())))
{
    noSuggestion=true;
}

其中每种方法都能按需完美运行。 java有什么方法可以检查所有条件,即使条件为假?我知道&&运算符的性质是,只要条件不成立,就没有必要检查其余条件,因为整个条件都将设置为false,但是我希望可以这样的事情是为了让我的代码更干净。我知道我可以使用布尔变量,并将返回值分配给5个不同的变量,但是是否有其他解决方法可以强制检查每个条件?非常感谢高级

1 个答案:

答案 0 :(得分:4)

单个&是一个非短路操作数-即对双方进行评估,而与是否需要无关。

此处有更多信息-https://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.22.2

但是,这听起来像是一个糟糕的设计。实际上,由于这个原因,某些代码分析工具会自动将这些运算符标记为可疑。通常,您会希望调用每个方法,因为它们会对对象的状态做出一些更改,而这在if语句中并不是您所期望的。但是您的方法名称不建议这样做。您要达到什么目标?