Java中的条件优先级

时间:2017-10-10 10:39:50

标签: java if-statement while-loop conditional-statements

我注意到一件我不清楚的事情。这是Java中while循环中条件的优先级。

让我们考虑一下插入排序的例子

// In-place Implementation of Insertion Sort
public class Insertion {
    public void sort(int[] arr) {
        int len = arr.length;
        // Goes from second element (first one is already put in array)
        for (int i = 1; i < len; i++) {
            int it = i - 1; // take a peak at the previous element
            int tmp = arr[i]; // make temporary value because arr[i] is going to be overwritten

            // keep shifting smaller values until this condition is met:
            while (it >= 0 && arr[it] > tmp) {
                arr[it+1] = arr[it];
                it--;
            }

            // place the item at the right spot
            arr[it+1] = tmp;
        }
    }
}

第11行:while (it >= 0 && arr[it] > tmp) {

使用此条件顺序(首先我们检查是否it >=0然后检查arr[it] > tmp是否完美。

但是,当我尝试切换这两个条件的位置时,我会得到一个意想不到的结果,更确切地说:IndexOutOfBoundsException

所以,似乎有一些条件优先级检查,我不知道它们。我认为&& (and)平等地检查双方。我错了吗?你能解释为什么会发生这种情况吗?条件的优先级是什么?

0 个答案:

没有答案