如何&&如果循环表达式评估?

时间:2015-04-29 05:37:28

标签: java if-statement

在评估表达式(x==y && a<b)时,首先计算布尔表达式x==y,然后评估a<b。对错????

请解释同样的工作。如果表达的话我很困惑。

6 个答案:

答案 0 :(得分:2)

&安培;&安培;运营商从左到右评估

如果首先首先评估x == y然后再评估&lt; b,那么这里有一个问题。 如果x == y的计算结果为假,则无论如何整个表达式都会变为假,因此不会评估&lt; b。这是我们使用&amp;&amp;时获得的基本优化。

如果你想要评估另一个表达式,即使第一个表达式趋于假,我们也可以使用&amp;像

  (x==y & a<b)

检查以下示例:

 int x=10,y=9,count=0;
    if(x==y && ++count == 0){
        System.out.println("true");
    }
    System.out.println(count);

在这种情况下输出为0

 int x=10,y=9,count=0;
    if(x==y & ++count == 0){
        System.out.println("true");
    }
    System.out.println(count);

在这种情况下输出为1。仔细检查操作员,我们使用&amp;

答案 1 :(得分:2)

对于&&(条件式和): -

x==y将首先评估,如果实现,则评估a<b。作为条件 - 并从左到右进行评估。

如果你只使用&个操作员: - (和操作员)

在这种情况下,将评估条件。不论第一个条件(左条件)是否失败或通过。

答案 2 :(得分:0)

评估

x==y,并且只有在其为真的情况下才会评估a<b

答案 3 :(得分:0)

&安培;&安培; (作为AND)和|| (作为OR)首先评估左表达式,只有在需要时才继续评估第二个表达式。

例如:

  • 虚假&amp;&amp;任何总是返回错误而不评估secong表达式。
  • True ||任何将始终返回 True

你也可以使用&amp;和|,它们评估两个表达式。 (如果第二个表达式抛出异常,评估将失败。)如果您需要更快,更安全的评估,请使用&amp;&amp;和||。

答案 4 :(得分:0)

&&将从左到右进行评估。运算符&&的左表达式首先被evalutaed,如果它执行为false,则永远不会计算右表达式,如果左表达式为true,则计算右表达式。

答案 5 :(得分:0)

&&从左到右处理。如果第一个参数为false,则忽略其他参数。当且仅当左边的所有参数都为真时,它才会处理右侧的参数。它被称为short-circuiting

在您的情况下,如果x==y为false,则不会评估a<b