【发布时间】:2015-04-29 05:37:28
【问题描述】:
在评估表达式(x==y && a<b) 时,首先评估布尔表达式x==y,然后评估a<b。是真是假????
请解释其工作原理。我对这个 if 表达式感到很困惑。
【问题讨论】:
-
是的,尽管
a < b仅在x == y为true时才被评估。
标签: java if-statement
在评估表达式(x==y && a<b) 时,首先评估布尔表达式x==y,然后评估a<b。是真是假????
请解释其工作原理。我对这个 if 表达式感到很困惑。
【问题讨论】:
a < b 仅在 x == y 为 true 时才被评估。
标签: java if-statement
对于&&(条件与):-
x==y 将首先评估,如果实现,那么它将评估a<b。 as Conditional-从左到右求值。
如果你只使用& operatore :- (And Operator)
在这种情况下,将评估两个条件。不考虑第一个条件(Left Condition)失败或通过。
【讨论】:
&& 运算符从左到右计算
如果先计算 x==y,然后再计算 a
如果您希望在第一个表达式趋于假的情况下评估另一个表达式,我们可以使用 & 喜欢
(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。仔细检查运算符,我们使用 &
【讨论】:
x==y 被评估,并且只有当它为真时,a<b 才会被评估
【讨论】:
&& (作为 AND) 和 || (作为 OR)首先评估左表达式,并且仅在需要时才继续评估第二个表达式。
例如:
您还可以使用 & 和 |,这两个表达式都求值。 (如果第二个表达式抛出异常,评估将失败。)如果您需要更快、更安全的评估,请使用 && 和 ||。
【讨论】:
&& 将从左到右进行评估。运算符&& 的左表达式首先被求值,如果它执行为假,那么右表达式永远不会被求值,如果左表达式为真,则右表达式被求值。
【讨论】:
&& 从左到右处理。如果第一个参数为假,则忽略其他参数。 当且仅当左侧的所有参数都为真时,它将处理右侧的参数。它被称为short-circuiting。
在您的情况下,如果 x==y 为 false,则不会评估 a<b。
【讨论】: