Java方法不是在表达式中调用的

Mar*_*tin 0 java jar

我真的很困惑这个问题,我有一个方法返回boolean - mainMethod(),所以我在逻辑表达式中使用结果,请看这里:

    boolean b = this.someMethod(); 
    b = b && this.mainMethod(); // method is not called
Run Code Online (Sandbox Code Playgroud)

我通过反编译器检查了jar文件,一切正常.然后我将上面的行改为:

  boolean b = this.someMethod(); 
  boolean result = this.mainMethod(); // now method is called!!!
  b = b && result; 
Run Code Online (Sandbox Code Playgroud)

有没有人知道这会怎么样?我不知道,这看起来很奇怪.

Rei*_*eus 6

如果this.someMethod()回报false然后this.mainMethod()将永远不会被调用引起的短路性质&&的声明运营商

b = b && this.mainMethod();
Run Code Online (Sandbox Code Playgroud)