如果声明与&&在测试第二个条件之前,第一个条件需要为真

时间:2013-04-16 09:14:30

标签: java if-statement conditional-statements

很抱歉,如果这是重复的,但我甚至想不出一种搜索方式。我不确定要问这个问题的术语,所以我只会解决我的问题。

从我的测试来看,似乎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!");
        }
}

4 个答案:

答案 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时,不会进行进一步的评估。