簡體   English   中英

關於for循環的困惑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM