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

Java 迭代变量为+;1在for循环之外?,java,arrays,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;

我有一个大小为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); 
     }
}
公共类测试{
公共静态void main(字符串[]args){
int[]a=新的int[4];
a[0]=2;
a[1]=3;
a[2]=4;
a[3]=5;
int n=a.length;//n=4
整数=8;
int j;
对于(j=0;j
输出:

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


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

int j = 0;
while(j < n) {
    //code
    j++;
}
intj=0;
while(j

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

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

int j = 0;
while(j < n) {
    //code
    j++;
}
intj=0;
while(j
因此,在最后一次迭代中,
j
将递增,它将进入条件,并且它将为false,因此不会输入for循环的主体。为了结束循环,
j
必须大于或等于条件

编程新手

for(initialization; booleanExpression; updateStatement) {
  ; // Body
}
步骤是,

  • 执行初始化语句
  • 如果布尔表达式为true,则继续,否则退出循环
  • 身体执行
  • 执行updateStatements
  • 返回到步骤2
  • 那么最终值应该是4,对编程来说是新的吗

    for(initialization; booleanExpression; updateStatement) {
      ; // Body
    }
    
    步骤是,

  • 执行初始化语句
  • 如果布尔表达式为true,则继续,否则退出循环
  • 身体执行
  • 执行updateStatements
  • 返回到步骤2
  • 所以终值应该是4,想想看

    这是您的for循环:

     for (j = 0; j < n; j++){
       //your code here
     }
    
    (j=0;j{ //你的代码在这里 } 以j=0开始for循环,每次迭代时,必须检查该值是否小于n(j 这就是n=4的情况:

    • 第1次迭代:

      j=0;
      0<4==真;
      //执行代码
      j++//正如您所见,在继续下一次迭代之前,您会增加

    • 第二次迭代:

      j=1;//现在j等于1,因为您在上一次迭代中增加了它
      1<4==正确;
      //执行代码
      j++

    • 第三次迭代:

      j=2;
      2<4==正确;
      //执行代码
      j++

    • 第4次迭代:

      j=3;
      3<4==正确;
      //执行代码
      j++

    • 第5次迭代:

      j=4;
      4<4==假;
      //循环结束

    如您所见,当代码即将开始第五次迭代时,j变量现在等于4,因此它不会通过j 但是,它在第4次迭代中仍然增加,因此得到j=4

    当我刚刚开始我的编码教育时,我的老师就是这样向我解释的,我希望它能像帮助我一样帮助你

    想想看

    这是您的for循环:

     for (j = 0; j < n; j++){
       //your code here
     }
    
    (j=0;j{ //你的代码在这里 } 以j=0开始for循环,每次迭代时,必须检查该值是否小于n(j 这就是n=4的情况:

    • 第1次迭代:

      j=0;
      0<4==真;
      //执行代码
      j++//正如您所见,在继续下一次迭代之前,您会增加

    • 第二次迭代:

      j=1;//现在j等于1,因为您在上一次迭代中增加了它
      1<4==正确;
      //执行代码
      j++

    • 第三次迭代:

      j=2;
      2<4==正确;
      //执行代码
      j++

    • 第4次迭代:

      j=3;
      3<4==正确;
      //执行代码
      j++

    • 第5次迭代:

      j=4;
      4<4==假;
      //循环结束

    如您所见,当代码即将开始第五次迭代时,j变量现在等于4,因此它不会通过j 但是,它在第4次迭代中仍然增加,因此得到j=4


    当我刚刚开始我的编码教育时,我的老师就是这样向我解释的,我希望它能像帮助我一样帮助你

    增量发生在每次迭代之后。要使循环停止,
    j
    必须为false。所以j必须至少等于n。因为n是4,当到达for循环结束后j是3,它将增加到4,然后for循环中的条件将失败,即j不再小于4。因此,j的最后一个值是4。增量发生在每次迭代之后。要使循环停止,
    j
    必须为false。所以j必须至少等于n。因为n是4,当到达for循环的末尾后j是3,它将增加到4和th