[英]confusion about 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);
}
它們都用於循環,但是為什么輸出不同?
可能是因為
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 (initializer; condition; increment)
statements;
它是這樣執行的:
initializer;
while (condition)
{
statements
increment
}
因此,增量僅在執行AFTER statements
時發生。
它從代碼中的一個開始的原因是,您在使用它之前告訴它要遞增:System.out.println(i);
輸出是不同的,因為for循環(第三個字段)的迭代步驟在代碼執行之后發生。
這與第一個for循環的等效語句:
for(int i=0;i<10;) {
System.out.println(i);
i++;
}
在第一個中,i ++在循環的末尾執行。 那就是在循環塊完成之后。 像編譯器這樣的IT部門在循環體的末尾添加了i ++。 因此,最初i的值為0,並在循環結束時增加。 在第二種情況下,您可以在循環開始時手動對其進行遞增
首先for
參數初始化。 它在每個完整操作之前進行一次評估。 第二個參數是條件。 它在每個單個周期之前執行,並且僅在為真時才繼續循環。 第三個for
參數是迭代,它評估AFTER EACH循環,包括最后一個循環。
最后一條規則使循環成為可能。 您應該從for
刪除int
定義for
然后在外部的某個地方定義循環變量。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.