1. ループの比較: for
vswhile
ループwhile
は、ステートメントまたはステートメントのグループを複数回実行する必要がある場所ならどこでも使用できます。しかし、考えられるすべてのシナリオの中で、強調する価値のあるシナリオが 1 つあります。
これは、プログラマー (プログラムの作成者) がループを何回実行する必要があるかを事前に知っている状況について話しています。1
これは通常、特別なカウンター変数を宣言し、ループの各反復で変数を増加 (または減少) することによって処理されます。
すべてが正常に動作しているように見えますが、あまり便利ではありません。ループの前に、カウンター変数の初期値を設定します。次に、条件で、すでに最終値に達しているかどうかを確認します。ただし、通常はループ本体の最後で値を変更します。
ループ本体が大きい場合はどうなるでしょうか? それとも、複数のネストされたループがある場合でしょうか? 一般に、このような場合は、カウンタ変数に関するすべての情報を 1 か所に収集することが望ましいです。それが、Java にループがある理由ですfor
。これもそれほど複雑ではないようです。
for (statement 1; condition; statement 2)
{
block of statements
}
ループwhile
には括弧内の条件のみが含まれますが、for
ループにはセミコロンで区切られた 2 つのステートメントが追加されます。
実際は思っているよりも単純です。コンパイラは次のようにfor
ループを通常のループに変換します。while
statement 1;
while (condition)
{
block of statements
statement 2;
}
さらに良いことに、これを例で示してみましょう。以下の 2 つのコード スニペットは同一です。
オプション1 | オプション 2 |
---|---|
|
|
カウンタ変数に関連するすべてのコードを 1 か所に集めただけですi
。
ループではfor
、ステートメント 1はループ自体が開始される前に 1 回だけ実行されます。これは 2 番目のコード スニペットではっきりとわかります。
ステートメント 2はループ本体と同じ回数実行され、毎回ループ本体全体が実行された後に実行されます。
2.for
ループが使用される場所
このfor
ループは、おそらく Java で最もよく使用されるタイプのループです。これはどこでも使用されており、プログラマにとってはループよりもわかりやすく便利ですwhile
。事実上、あらゆるwhile
ループをループに変換できますfor
。
例:
while ループ | forループ |
---|---|
|
|
|
|
|
|
|
|
|
|
最後の例に注目してください。ループカウンターを操作するためのステートメントがありません。カウンターも声明もありません。
Javaではループ内でfor
「カウンタを初期化する文」と「カウンタを更新する文」を省略できます。ループ条件を定義する式も省略できます。
for
3.ループ使用のニュアンス
for
ループとbreak
andステートメントの使用に関する重要な点continue
。
break
ループ内のステートメントはループfor
内と同じように機能しwhile
、ループを直ちに終了します。ステートメントcontinue
はループ本体をスキップしますが、スキップしませんstatement 2
(ループ カウンタは変更されます)。
for
とwhile
ループの関係をもう一度見てみましょう。
for (statement 1; condition; statement 2)
{
block of statements
}
statement 1;
while (condition)
{
block of statements
statement 2;
}
continue
for
ステートメントがループ内で実行される場合、ステートメントのブロックの残りの部分はスキップされますが、ステートメント 2 (ループのカウンタ変数で動作するステートメントfor
) は引き続き実行されます。
7 で割り切れる数値をスキップする例に戻りましょう。
このコードは永久にループします | このコードは正常に動作します |
---|---|
|
|
ループを使用するコードはwhile
機能しません。i が 7 より大きくなることはありません。しかし、for
ループを含むコードは正常に機能します。
4. for ループの比較: Java と Pascal
ちなみに、PascalにもFor
ループがあります。一般に、基本的にすべてのプログラミング言語には 1 つがあります。しかし、Pascal ではそれが非常に明確です。例:
パスカル | ジャワ |
---|---|
|
|
|
|
|
|
GO TO FULL VERSION