forループについての混乱

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);
}

両方ともループのためだが、出力が異なるのはなぜですか?

0
それらは同じループではありませんが、出力が異なるのはなぜですか?デバッガでコードをステップ実行すれば、各行の動作を正確に把握できます。
追加された 著者 Peter Lawrey,
下の2つの答えを組み合わせると、正しい答えが得られます:)
追加された 著者 Adel Boutros,

7 答え

おそらく

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

次のものと同等です。

for(int i=0;i<10;) { 
    System.out.println(i);
    i++;
}
13
追加された

に:

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

i ++ は各繰り返しの前に実行されてから後に実行されます。

つまり、このループは次のようになります。

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

i ++ println()の後ではなくに発生することに注意してください。

4
追加された

forループの見方は次のようになります:

for (initializer; condition; increment)
    statements;

これは次のように実行されます:

initializer;
while (condition)
{
   statements
   increment
}

したがって、インクリメントは statements の後にのみ実行されます。

2
追加された

それがあなたのコードで始まる理由は、使用する前にインクリメントするように指示していることです。 System.out.println(i);

1
追加された

最初のものでは、ループの最後にi ++が実行されます。ループブロックが完了した後です。コンパイラのようなIT部門は、ループ本体の最後にi ++を追加します。したがって、最初はiの値は0で、ループの最後に増分されます。 2番目のケースでは、ループの先頭で手動で増分しています

0
追加された

最初の for 引数は初期化です。各操作全体の前に1回評価されます。 2番目の引数は条件です。それぞれの単一サイクルの前に実行され、ループが真であればループが継続します。 3番目の for 引数は反復処理で、最後の1つを含めて、各サイクル後に評価されます。

最後のルールは、ループを連鎖させることを可能にする。 for から int の定義を削除し、ループ変数を外側のどこかに定義する必要があります。

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

0
追加された

forループ(第3フィールド)の反復ステップはコードの実行後に行われるため、出力は異なります。

これは、最初のforループと同等の文です。

for(int i=0;i<10;) { 
    System.out.println(i);
    i++;
}
0
追加された