布尔逻辑转换规则解释这个切换到Java ==?

Jam*_* P. 1 java boolean-logic logical-operators

我正在对CodingBat进行练习.在此页面上,解决方案中提到了这一点:

  // The above can be shortened to:
  //   return ((aSmile && bSmile) || (!aSmile && !bSmile));
  // Or this very short version (think about how this is the same as the above)
  //   return (aSmile == bSmile);
Run Code Online (Sandbox Code Playgroud)

有没有解释短版本的规则?你如何从逻辑AND到等于?

sqr*_*ept 5

第一个条件基本上说:如果两者都是真或两者都是假的.只有当他们平等时才会发生这种情况

请注意,在Java中,有一个布尔对象的陷阱,其中将打印以下两个对象:

Boolean aSmile=new Boolean(true),bSmile=new Boolean(true);
if((aSmile & bSmile) || (!aSmile && !bSmile)) { System.out.println("SAME"); }
if(aSmile!=bSmile)                            { System.out.println("NOT THE SAME"); }
Run Code Online (Sandbox Code Playgroud)

  • 一个陷阱,如果使用Boolean.TRUE和Boolean.FALSE,第二个测试将起作用,但使用new Boolean(true)和new Boolean(false)将失败,尽管后者是反模式,因此破解的代码可能工作了很长时间. (2认同)