Java の For-Each ループ

WBOY
WBOYオリジナル
2024-08-30 15:25:221219ブラウズ

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

上記で使用されている各用語の説明は次のとおりです。

  1. の「type」は、
  2. のオブジェクトのデータ型を示します。
  3. 「iter_var」は、ループを反復するときにコレクションの各値を格納する反復変数名を示します。
  4. 「コレクション」は、反復処理の対象となるコレクションまたは配列を指定します。
  5. 'statement-block は、ループの反復ごとに実行するステートメントのセットです。

for-each ループはコレクション/配列要素に順番にアクセスし、各要素の値を反復変数に格納することに注意することが重要です。以下は、for-each ループのフロー図です。

Java の For-Each ループ

お気づきのとおり、for ループと for-each ループには微妙な違いがあります。 for ループでは、反復回数を事前に指定する必要があります。ただし、これは for-each ループの場合には当てはまりません。ループはコレクション/配列の最初の要素から最後の要素まで反復し、反復回数を指定する必要はありません。

留意すべき重要な点は、for-each ループで指定された型がコレクション内の要素の型と一致する必要があるということです。一致しないと互換性の問題が発生します。

Java の For-Each ループの例

以下にさまざまな例を示します:

1. for ループ

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

出力:

Java の For-Each ループ

2. For-Each ループ

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

出力:

Java の For-Each ループ

上の図からわかるように、両方のループを使用しても出力は同じです。

Break ステートメントを使用した Foreach ループ

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

出力:

Java の For-Each ループ

上記の for-each ループでは、x は反復ごとに配列の 1 つの要素を格納する反復変数であり、次の反復で変更されます。最初の反復では、x は配列の最初の要素と最後の反復要素の最後の要素を格納します。 for ループとは異なり、インデックスを使用して配列要素にアクセスします。for 各ループは反復変数を使用して要素にアクセスします。

反復変数は「読み取り専用」であるため配列要素の値を一時的に保存し、その値を変更しても元の配列は変更されないため、各ループの使用には注意が必要です。これは、要素を変更すると元の配列が変更される for ループと矛盾します。

配列の各要素に 5 を加算する例を考えてみましょう。次のコード例の出力の違いを確認できます。

異なる条件の 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 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]+" ");
}
}
}

出力:

Java の For-Each ループ

元の配列の更新を示す for ループの出力

さまざまな条件を使用した foreach ループ

さまざまな条件の 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+" ");
}
}
}

出力:

Java の For-Each ループ

元の配列が更新されていないことを示す for-each ループの出力

Java の For-Each ループについて覚えておくべきこと

  1. Java の For-Each ループは、シーケンス内の配列/コレクション要素を反復処理するために使用されます。
  2. Java の For-Each ループは、反復変数を使用して、要素のコレクションまたは配列を反復処理します。
  3. 反復変数を変更しても、元の配列/コレクションは読み取り専用であるため、変更されません。
  4. for-each ループの型は、元の配列/コレクション要素の型と一致する必要があります。
  5. Foreach ループはコレクションのすべての要素を反復するため、反復回数を指定する必要はありません。
  6. break ステートメントを使用して for-each ループを停止することができます。

以上がJava の For-Each ループの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。