0Pricing
Java Academy · レッスン

forループ内のvar

ループ変数の型を推論します

「forループ内のvar」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

ループでのvar

varは、従来のforループでも拡張for-eachループでも、ループ変数として自然に使用できます。コンパイラはループの文脈から型を推論します。

従来のforループのカウンター

従来のforループでは、varが初期化子からカウンターの型を推論します。ここでのvar i = 0からはintが推論されます。

public class Main {
    public static void main(String[] args) {
        for (var i = 0; i < 5; i++) {
            System.out.println("i = " + i);
        }
    }
}

リストに対するfor-each

拡張forループでは、varがコレクションから要素の型を推論します。ここでは各nameがStringになります。

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var names = List.of("Ann", "Ben", "Cara");
        for (var name : names) {
            System.out.println(name);
        }
    }
}

配列に対する for-each

配列でも同じように使用できます。要素の型は配列の型から推論されます。

public class Main {
    public static void main(String[] args) {
        var scores = new int[]{90, 85, 78};
        var total = 0;
        for (var s : scores) {
            total += s;
        }
        System.out.println("Total: " + total);
    }
}

Map のエントリを反復処理する

マップのエントリを反復処理するときは、var を使うことで、冗長な Map.Entry 型を記述せずに済みます。

import java.util.Map;

public class Main {
    public static void main(String[] args) {
        var ages = Map.of("Ann", 30, "Ben", 25);
        for (var entry : ages.entrySet()) {
            System.out.println(entry.getKey() + " -> " + entry.getValue());
        }
    }
}

推論された要素のメソッド

要素の型がわかっているため、ループ内でそのメソッドを呼び出すと、コンパイル時の完全な型チェックを受けられます。

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var words = List.of("red", "green");
        for (var w : words) {
            System.out.println(w.toUpperCase() + " (" + w.length() + ")");
        }
    }
}

ネストしたループ

ネストしたループでも var を使用できるため、それぞれのカウンター宣言を短くできます。

public class Main {
    public static void main(String[] args) {
        for (var i = 1; i <= 3; i++) {
            for (var j = 1; j <= 3; j++) {
                System.out.print(i * j + " ");
            }
            System.out.println();
        }
    }
}

カウントダウン

推論される型は初期化子に従うため、減少していくループも同じように動作します。

public class Main {
    public static void main(String[] args) {
        for (var n = 5; n >= 1; n--) {
            System.out.println(n);
        }
        System.out.println("Liftoff");
    }
}

long カウンターでの var

long 型のカウンターが必要な場合は、初期化子に long リテラルを使用して、var により幅の広い型が推論されるようにします。

public class Main {
    public static void main(String[] args) {
        var sum = 0L;
        for (var i = 1L; i <= 1000000L; i++) {
            sum += i;
        }
        System.out.println(sum);
    }
}

ループでの可読性

ループは var を使用するのに特に適した場所です。コレクションや初期化子から型が明らかだからです。コードを簡潔かつ安全に保てます。

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var temps = List.of(20, 22, 19, 25);
        var max = Integer.MIN_VALUE;
        for (var t : temps) {
            if (t > max) max = t;
        }
        System.out.println("Max: " + max);
    }
}

インデックスと値を同時に扱う

インデックス付きの一般的なループと var を組み合わせて、リストから位置と値の両方を読み取れます。

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var items = List.of("a", "b", "c");
        for (var i = 0; i < items.size(); i++) {
            System.out.println(i + ": " + items.get(i));
        }
    }
}

確認問題

names が List<String> のとき、for (var name : names) における name の型は何でしょうか。

まとめ

ループでの var の使い方を学びました。

  • 一般的なループ:初期化子からカウンターの型を推論します
  • for-each:コレクションまたは配列から要素の型を推論します
  • Map.Entry のような冗長な型の記述を省けます
  • long のカウンターには long リテラル(例:0L)を使用します
  • ループは var を使用するのに最適な場所です

よくある質問

「forループ内のvar」レッスンは無料ですか?

はい。「forループ内のvar」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「forループ内のvar」で何を学びますか?

ループ変数の型を推論します ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「forループ内のvar」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ローカル変数にvarを使う
  2. varで可読性が向上する場合
  3. forループ内のvar
  4. varの制限
← Java Academyに戻る