public static void insertionSort(int[] data) {
for (int i =0; i < data.length; i++) {
int current = data[i];
int j = i-1;
while (j >=0 && data[j] >= current) {
data[j+1] = data[j];
j--;
}
data[j+1] = current;
}
}
当 data[-1] 第一次出现时, while (j >=0 && data[j] >= current) 行应该抛出数组边界索引。我不明白为什么不。有人可以帮忙吗 谢谢 阿肖克·帕普
最佳答案
如果可以更早满足条件,则永远不会完全评估此类 boolean 表达式。
所以...在你的情况下,因为 j >= 0
是 false
并且 false && ???
将始终是 false
第二部分不需要评估。这就是为什么data[-1]
永远不会被调用。
您可以使用相同的原则进行null
检查,例如
if (object != null && object.isSomething())
关于java - 数组索引越界未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698847/