迭代变量在for循环之外为+1?

JDo*_*Doe 1 java arrays

我有一个大小为4的数组,我想检查该数组是否包含数字8(显然不是),代码仅用于测试。

在for循环中,j从0变为3,所以循环中j的最终值为3。但是,我不理解为什么循环 j的值已更改为4,为什么还不是3 ?

public class Test {
    public static void main (String[] args) {
        int[] a = new int[4];
        a[0] = 2; 
        a[1] = 3;
        a[2] = 4;
        a[3] = 5;
        int n = a.length;    // n = 4
        int number = 8;
        int j;
        for (j = 0; j < n; j++) {
            if (a[j] == number) {
                System.out.println("The number is at place " + j);
                break;
            }
            // Last value of j is 3:
            System.out.println("Value of j after each iteration " + j); 
        }
        // But here j is 4?
        System.out.println("Value of j after the for-loop: " + j); 
     }
}
Run Code Online (Sandbox Code Playgroud)

输出:

每次迭代后的j值0每次迭代后的j
值1每次迭代后的j
值2
每次迭代
后的j值3 for循环后的j值:4

GBl*_*ett 7

是的,因为在for循环的末尾,变量有一个增​​量。for循环可以重写为:

int j = 0;
while(j < n) {
    //code
    j++;
}
Run Code Online (Sandbox Code Playgroud)

因此,最后一次迭代j将递增,并转到条件中,并且它为false,因此不会输入for循环的主体。为了使循环结束,j必须大于或等于条件。