如果我在java中有一个while条件如下(j> = 1&& i< = 7)我的问题是如果第一个条件失败那么第二个条件将被检查? 换句话说,如果j = 0,编译器将检查I< = 7或它是否会忽略它。 请帮我 谢谢
答案 0 :(得分:2)
(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
答案 1 :(得分:1)
不,如果第一个条件返回 false ,那么整个表达式会自动返回 false 。
Java
不会费心去检查其他情况。
答案 2 :(得分:0)
不会。逻辑运算符&&
快捷方式,如果其左侧参数为false,将停止评估。
请注意,Java也具有逻辑(除了按位&
!)运算符&
,它将不快捷方式;因此,如果a
是a & b
中评估为false的布尔表达式,那么b
将进行评估(但最终结果仍为false)。
答案 3 :(得分:0)
不评估&amp;&amp;如果第一个条件为假,那么它不会评估第二个条件。
同样在评估||时如果第一个条件为真,则不评估第二个条件。
答案 4 :(得分:0)
这称为懒惰评估。为了使它变得贪婪,请使用单个&符号逻辑运算符。在这种情况下,它也将评估第二个条件,即使第一个条件是假的。
答案 5 :(得分:0)
我同意别人的意见。答案是不。这被称为短路评估。