很抱歉,如果这是重复的,但我甚至想不出一种搜索方式。我不确定要问这个问题的术语,所以我只会解决我的问题。
从我的测试来看,似乎if语句在尝试转到数组[10]之前会退出。我总是这样吗?意思是,如果我有&&在我的if语句中,左侧是false,是否会在测试第二个之前退出?就此而言,它会不会先测试左派?
public static void main(String[] args) {
boolean [] array = new boolean [10];
Arrays.fill(array, true);
int i = 10;
if(i < array.length && array[i]){
System.out.println("WhoHoo!");
}
}
答案 0 :(得分:9)
来自运营商的Java Tutorials:
&amp;&amp;和||运算符执行条件AND和条件OR 对两个布尔表达式的操作。这些运营商展出 “短路”行为,这意味着第二个操作数是 仅在需要时进行评估。
答案 1 :(得分:2)
是。如果左侧为假,它将终止该条件。因为如果你放&&
那么所有条件都必须为真,如果任何条件变为假,那么就没有必要再进一步了。所以它在条件得到false
答案 2 :(得分:1)
如果我有&amp;&amp;在我的if语句中,左侧是假的,是吗? 在测试第二个之前总是退出吗?
是。如果左侧是假的,则无需检查右侧,因为当您有:
if(a && b) { ... }
如果!a
,则无论b
是什么,整个语句都会被评估为 false 。
如果a
,则会继续评估下一个。
总结一下,请记住this:
......第二个操作数仅在需要时评估 。
答案 3 :(得分:0)
如果第一个条件评估为 true ,它将仅评估第二个条件。
评估从左侧开始,当评估为false时,不会进行进一步的评估。