为什么这会回归真实?

0 java if-statement boolean

我最近开始自学Java,在使用CodingBat后,我留下了一个非常基本的问题.为什么这回归"真实"?

a = 1, b= -1, negative = true

public boolean posNeg(int a, int b, boolean negative) {
  if(!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0){
    return true;
  }else if(negative && a <= 0 && b <= 0){
    return true;
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)

And*_*ner 7

在:

!negative && a <= 0 && b >= 0 || a >= 0 && b <= 0
Run Code Online (Sandbox Code Playgroud)

的更高的优先级&&||意味着它是一样的:

(!negative && a <= 0 && b >= 0) || (a >= 0 && b <= 0)
Run Code Online (Sandbox Code Playgroud)

有条件或运营商(||)如果任一操作数为真将返回true:

  • !negative && a <= 0 && b >= 0是假的,因为negative是假的(原样b >= 0,但没有评估);
  • a >= 0 && b <= 0 是真的

因此表达式是true,所以if语句被执行,这意味着true返回.