关于for循环的混淆
问题描述:
for(int i=0;i<10;i++) {
System.out.println(i);
}
在这个简单的for循环中,我们将i
初始化为零,并且每一次都增加它。但是,如果我们已经增加了i
,为什么我的输出从0开始。是不是必须为0?还有一个迹象表明关于for循环的混淆
for(int i=0;i<10;) {
i++;
System.out.println(i);
}
它们都是为了循环,但为什么输出不同?
答
大概是因为
for(int i=0;i<10;i++) {
System.out.println(i);
}
相当于:
for(int i=0;i<10;) {
System.out.println(i);
i++;
}
答
在:
for(int i=0;i<10;i++) {
的i++
被每次迭代之后不之前执行。
换句话说,这个循环就相当于:
int i = 0;
while (i < 10) {
System.out.println(i);
i++;
}
注意,i++
发生后的println()
而不是之前。
答
输出是不同的,因为for循环(第三个字段)的迭代步骤发生在代码执行后。
这相当于语句的第一个for循环:
for(int i=0;i<10;) {
System.out.println(i);
i++;
}
答
方式的for循环看起来是这样的:
for (initializer; condition; increment)
statements;
它是这样执行的:
initializer;
while (condition)
{
statements
increment
}
所以,增量只发生在执行statements
之后。
答
在第一个中,i ++在循环结束时执行。那是在循环块完成之后。 IT像编译器一样将i ++添加到循环体的末尾。所以最初i的值是0,并在循环结束时递增。在第二种情况下,您在循环开始时手动增加它
答
它在您的代码中从一个开始的原因是您要在使用之前先增加它: System.out.println(i) ;
答
第一个for
参数是初始化;它在每次整个操作之前评估一次。第二个参数是一个条件。它在每一个单一循环之前执行,只有循环为真才会继续循环。第三个for
参数是迭代的,它会评估AFTER EACH周期,包括最后一个周期。
最后一条规则可以将循环放入链中。您应该从for
中删除int
定义,然后在外部某处定义循环变量。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
合并2回答以下问题,你会得到正确的答案:) – 2012-02-06 16:13:17
'他们都为循环偏偏输出不同的?',因为他们是不一样的东西。如果你在调试器中遍历代码,你将会看到每一行的功能。 – 2012-02-06 16:22:57