【发布时间】:2015-01-04 16:54:11
【问题描述】:
如果我在 java 中有一个 while 条件如下 while(j>=1 && i
【问题讨论】:
-
不,执行将在第一个处停止!!
标签: java while-loop conditional-statements
如果我在 java 中有一个 while 条件如下 while(j>=1 && i
【问题讨论】:
标签: java while-loop conditional-statements
不,如果第一个条件返回 false,那么整个表达式会自动返回 false。
Java 不会费心检查其他条件。
【讨论】:
不会的。逻辑运算符&& 的快捷方式,如果左侧参数为假,将停止评估。
请注意,Java 也有逻辑(除了按位&!)运算符&,这将不是快捷方式;因此,如果a 是在a & b 中评估为假的布尔表达式,那么b 将 被评估(但最终结果仍然为假)。
【讨论】:
在评估 && 时不,如果第一个条件为假,那么它不会评估第二个条件。
同样在评估 ||如果第一个条件为真,则不计算第二个条件。
【讨论】:
(j>=1 && i<=7 && cond1 && cond2 && ... && condN) // will evaluate until the one condition fails
(j>=1 & i<=7 & cond1 & cond2 & ... & condN) // will evaluate all the conditions
和or
(j>=1 || i<=7 || cond1 || cond2 || ... || condN) // will evaluate until the one condition is true
(j>=1 | i<=7 | cond1 | cond2 | ... | condN) // will evaluate all conditions
示例:
让我们使用这两种方法:
public boolean isTrue(){
System.out.println("true");
return true;
}
public boolean isFalse(){
System.out.println("false");
return false;
}
所以,在第一种情况下:
boolean cond = isFalse() && isTrue();
输出是:
false
cond 的值为false
在第二种情况下:
boolean cond = isFalse() & isTrue();
输出是:
false
true
cond 的值为false
【讨论】:
这称为惰性求值。为了使其变得贪婪,请使用单个 & 逻辑运算符。在这种情况下,它也会评估第二个条件,即使第一个结果为假。
【讨论】:
我同意其他人的说法。答案是不。这称为短路评估。
【讨论】: