For each ループは、JDK 5 以降の Java に導入されました。これは、コレクションまたは配列のすべての要素を順番に反復処理することを目的としています。 C# などの他の言語にもあり、for-each キーワードが使用されます。ただし、Java では、C# とは異なり、for-each ループを実装するためにのみキーワード「for」を使用しますが、その構文は従来の for a ループとは異なります。この for-each ループは、Java の拡張 for ループとしても知られています。
無料ソフトウェア開発コースを始めましょう
Web 開発、プログラミング言語、ソフトウェア テスト、その他
構文:
for(type iter_var : Collection) statement_block
上記で使用されている各用語の説明は次のとおりです。
for-each ループはコレクション/配列要素に順番にアクセスし、各要素の値を反復変数に格納することに注意することが重要です。以下は、for-each ループのフロー図です。
お気づきのとおり、for ループと for-each ループには微妙な違いがあります。 for ループでは、反復回数を事前に指定する必要があります。ただし、これは for-each ループの場合には当てはまりません。ループはコレクション/配列の最初の要素から最後の要素まで反復し、反復回数を指定する必要はありません。
留意すべき重要な点は、for-each ループで指定された型がコレクション内の要素の型と一致する必要があるということです。一致しないと互換性の問題が発生します。
以下にさまざまな例を示します:
for ループを使用して人々のグループの平均年齢を調べてみましょう:
コード:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int sum = 0; System.out.print("Ages of the group are : "); for (int i = 0; i < 10 ; i++) { System.out.print(ages[i]+" "); sum += ages[i]; } System.out.println("\n Average age of the group = " + (sum/10)); } }
出力:
for-each ループを使用して人々のグループの平均年齢を見つけるには:
コード:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int sum = 0; System.out.print("Ages of the group are : "); for (int x : ages) { System.out.print(x+" "); sum += x; } System.out.println("\n Average age of the group = " + (sum/10)); } }
出力:
上の図からわかるように、両方のループを使用しても出力は同じです。
break ステートメントを使用すると、for-each ループの反復回数を減らすことができます。たとえば、最初の 5 つの要素のみの合計を見つけたい場合は、次のように Break ステートメントを使用できます:
コード:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; int ctr = 0, sum = 0; System.out.print("Ages of the group are : "); for (int x : ages) { System.out.print(x+" "); } for (int x : ages) { if (ctr == 5) break; sum += x; ctr += 1; } System.out.println("\nSum of age of first 5 people of the group = " + sum); } }
出力:
上記の for-each ループでは、x は反復ごとに配列の 1 つの要素を格納する反復変数であり、次の反復で変更されます。最初の反復では、x は配列の最初の要素と最後の反復要素の最後の要素を格納します。 for ループとは異なり、インデックスを使用して配列要素にアクセスします。for 各ループは反復変数を使用して要素にアクセスします。
反復変数は「読み取り専用」であるため配列要素の値を一時的に保存し、その値を変更しても元の配列は変更されないため、各ループの使用には注意が必要です。これは、要素を変更すると元の配列が変更される for ループと矛盾します。
配列の各要素に 5 を加算する例を考えてみましょう。次のコード例の出力の違いを確認できます。
さまざまな条件の for ループを以下に説明します。
コード:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; System.out.print("Elements of the array are : "); for (int i = 0; i < 10; i++) { System.out.print(ages[i]+" "); ages[i]+= 5; } System.out.print("\nNew elements of the array are : "); for (int i = 0; i < 10; i++) { System.out.print(ages[i]+" "); } } }
出力:
元の配列の更新を示す for ループの出力
さまざまな条件の for ループを以下に説明します。
コード:
public class Main { public static void main(String[] args) { int ages[] = {15, 18, 16, 17, 14, 12, 13, 20, 22, 25}; System.out.print("Elements of the array are : "); for (int x : ages) { System.out.print(x+" "); x += 5; } System.out.print("\nNew elements of the array are : "); for (int x : ages) { System.out.print(x+" "); } } }
出力:
元の配列が更新されていないことを示す for-each ループの出力
以上がJava の For-Each ループの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。