在JAVA中,for循环不会超出一维数组的界限吗?

时间:2016-12-13 20:58:02

标签: java arrays

看看:

int[] v = new int[10];    
for (int i = 0; i < v.length; i++) {
            for (int j = i + 1; j < v.length; j++) {
                if (v[i] > v[j]) {
                    aux = v[i];
                    v[i] = v[j];
                    v[j] = aux;
                }
            }
        }

这完全有效。但有人可以解释一下吗?

即使我使用j启动i + 1,此阵列如何 NOT 也会超出范围?这是如何运作的?

3 个答案:

答案 0 :(得分:1)

您已将初始化与条件混淆。 for循环()的语法是 -

s1[i] < 0

因此即使你从1开始j(j = i + 1和i = 0的初始值),j也只会更新直到它等于数组的长度v即10。所以那一刻,j = 10(当i = 9时),控制将从j for loop()出来,当它将转移到i for loop()时,我将更新为10,从而满足它的条件并将控制移出i for loop()也是。

答案 1 :(得分:0)

我认为你需要回到for循环的基础

for循环可以定义为for(before starting;continue when true;do at end of pass))

所以你的起始值是什么并不重要,只要j等于v.length,它就会停止。如果你从i开始,它只会少一个循环。

答案 2 :(得分:0)

你的for循环由变量组成,以跟踪,条件和迭代。在你的代码中,for循环的条件表明保持跟踪的变量不能超过v的长度。因此,在排序期间(因为这就是代码),内循环使用j比较所有v的值。作为交换的索引,如果它们符合if条件。外部循环就是为了确保v的每个索引都被检查并且位于正确的位置。