简化陈述

Zah*_*and 1 java intellij-idea simplify

我正在研究一个项目,我正在使用Intellij IDEA.在我写作的时候,我收到了一条通知,说明我的if语句可以简化了.(注意我还是新编码)

它说:

报告if语句可以简化为单个赋值还是返回语句.例如:

if (foo()) {
   return true;
} else {
   return false;
}
Run Code Online (Sandbox Code Playgroud)

可以简化为

return foo();
Run Code Online (Sandbox Code Playgroud)

这是如何运作的?假设foo()是数字4,这不会只返回4而不是真的吗?我有什么误会?

编辑

这是我写的代码:

if (row > 0 && row < 4 && col > 0 && col < 4) {
    return false;
} else {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

它可以简化为:

return !(row > 0 && row < 4 && col > 0 && col < 4);
Run Code Online (Sandbox Code Playgroud)

我只是不明白这是如何简化的.

ζ--*_*ζ-- 6

(row > 0 && row < 4 && col > 0 && col < 4) 本身就是一个布尔值(true或false).

我们可以把它分解为boolean && boolean && boolean && boolean作为<>运算符返回布尔值.同样,布尔值和布尔值是布尔值,因此整个表达式是布尔值,可以这样返回.

您可以这样考虑:

  • 对于该行,您有一个数字,因此您可以说"多少"或"哪个数字".列相同.
  • 对于比较,你可以问:如果x和y是数字,那么x <y?可能的答案是truefalse.因此布尔.
  • 对于&&,, ||或者!,你可以问自己:"如果a和b是陈述(真或假),那么"a和b都是真的"是真或假.对于"或",或"a不是真的" "结果是真实的和错误的.

现在你可以查看if,并将其读作"如果foo为true,则返回false.否则返回true".这显然简化为"返回foo的反面"或"返回不foo ".