关于for循环的困惑

时间:2012-02-06 16:10:42

标签: java for-loop

for(int i=0;i<10;i++) { 
    System.out.println(i);
}

在这个简单的for循环中,我们将i初始化为零并在每个回合中递增它。但是如果我们已经增加i,为什么我的输出从0开始。它不是必须为0吗?还有一个指示

for(int i=0;i<10;) { 
    i++;
    System.out.println(i);
}

他们都是循环,但为什么输出不同?

7 个答案:

答案 0 :(得分:13)

可能是因为

for(int i=0;i<10;i++) { 
    System.out.println(i);
}

相当于:

for(int i=0;i<10;) { 
    System.out.println(i);
    i++;
}

答案 1 :(得分:4)

在:

 for(int i=0;i<10;i++) { 

{<1}}在每次迭代后执行,而不是之前。

换句话说,这个循环相当于:

i++

请注意,int i = 0; while (i < 10) { System.out.println(i); i++; } 发生在 i++之后发生

答案 2 :(得分:2)

for-loop看起来像这样:

for (initializer; condition; increment)
    statements;

执行方式如下:

initializer;
while (condition)
{
   statements
   increment
}

因此,增量仅在statements执行后发生。

答案 3 :(得分:1)

它在代码中以1开头的原因是你在使用前告诉它增加: 的System.out.println(ⅰ);

答案 4 :(得分:0)

输出是不同的,因为for循环的迭代步骤(第三个字段)在执行代码之后发生。

这是第一个for循环的等效语句:

for(int i=0;i<10;) { 
    System.out.println(i);
    i++;
}

答案 5 :(得分:0)

在第一个中,i ++在循环结束时执行。那是在循环块完成之后。像编译器这样的IT将i ++添加到循环体的末尾。所以最初i的值是0并且在循环结束时递增。在第二种情况下,您将在循环开始时手动递增

答案 6 :(得分:0)

第一个for参数是初始化;它在每次整个操作之前评估一次。第二个参数是一个条件。它在每个单个循环之前执行,如果是真的则循环继续。第三个for参数是迭代,它评估每个循环之后,包括最后一个循环。

最后一条规则可以将循环放入链中。您应该从int中删除for定义,然后在外面的某处定义循环变量。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html