Java- &&评估

Arp*_*sss 5 java

任何人都可以帮助我解决以下问题:

我的代码如下:

if(cond1 && cond2 && .. && cond10)
Run Code Online (Sandbox Code Playgroud)

这里,cond1是昂贵的操作,其输出是布尔值.

现在我的问题是当cond2输出为假时JAVAC会做什么.具体来说,是评估cond3的输出还是停止评估?

更具说明性,

if(cond1 && cond2 && .. && cond10)
  //do this
Run Code Online (Sandbox Code Playgroud)

if(cond1){
  if(cond2){
         .
         .
         .
        if(cond10){
             //do this
                   }
Run Code Online (Sandbox Code Playgroud)

在java中是相同的(在执行方式的情况下)?

Str*_*ior 13

&&操作上始终短路false.条件3仅在条件1和条件2的情况下进行评估true.


twa*_*249 6

如果整个表达式是&&or||那么 Java 将使用短路求值。这意味着如果一切都是,&&它将在第一个 false 之后停止,如果一切都是,||它将在第一个 true 之后停止。

  • 如果您的意思是从左到右或从右到左,那么它的计算结果是从左到右。 (3认同)