0Pricing
Java Academy · レッスン

ローカル変数にvarを使う

コンパイラーに型を推論させます

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

ローカル型推論

Java 10以降では、varを使ってローカル変数を宣言し、初期化子からコンパイラに型を推論させることができます。これがローカル型推論です。変数は引き続き静的型付けされます。

最初のvar

値を代入するときは、明示的な型をvarに置き換えられます。コンパイラはリテラルを確認し、適切な型を推論します。

public class Main {
    public static void main(String[] args) {
        var message = "Hello";
        var count = 42;
        System.out.println(message + " " + count);
    }
}

varは動的型付けではない

varによってJavaが動的型付けになるわけではありません。いったん推論された型は固定されます。後から別の型の値を代入すると、コンパイルエラーになります。

public class Main {
    public static void main(String[] args) {
        var n = 10;
        n = 20;
        System.out.println(n);
    }
}

オブジェクトの型を推論する

varはオブジェクトにも使用できます。推論される型は、初期化式が返す型です。

import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        var list = new ArrayList<String>();
        list.add("a");
        list.add("b");
        System.out.println(list);
    }
}

繰り返しを減らす

長いジェネリック型を2回記述する必要がなくなります。varによって、左辺の重複する型記述を省けます。

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        var scores = new HashMap<String, Integer>();
        scores.put("Alice", 90);
        System.out.println(scores);
    }
}

メソッドの戻り値から推論する

メソッドが値を返す場合、varは宣言された戻り値の型を自動的に取得します。

public class Main {
    static String greet() {
        return "Hi there";
    }
    public static void main(String[] args) {
        var g = greet();
        System.out.println(g.toUpperCase());
    }
}

プリミティブ型でのvar

整数リテラルからはintが推論され、小数リテラルからはdoubleが推論されます。どのプリミティブ型になるかを意識してください。

public class Main {
    public static void main(String[] args) {
        var i = 5;
        var d = 5.0;
        var b = true;
        System.out.println(i + " " + d + " " + b);
    }
}

コンパイル時の型チェックは健在

型はコンパイル時に既知であるため、コンパイラは引き続き型エラーを検出します。推論されたintに対してStringのメソッドを呼び出すと、コンパイルに失敗します。

public class Main {
    public static void main(String[] args) {
        var name = "Coddy";
        System.out.println(name.length());
    }
}

直ちに初期化する必要がある

var宣言では、同じ行に初期化子が必要です。コンパイラは、型を推論するための値を必要とします。

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

配列でも使用できる

初期化子から要素の型が明確であれば、配列の型も推論できます。

public class Main {
    public static void main(String[] args) {
        var numbers = new int[]{1, 2, 3, 4};
        var sum = 0;
        for (var n : numbers) {
            sum += n;
        }
        System.out.println(sum);
    }
}

実践的な例

小さなプログラムでvarを組み合わせると、完全な型付けを維持しながらコードをすっきりさせられます。

import java.util.List;

public class Main {
    public static void main(String[] args) {
        var fruits = List.of("apple", "banana", "cherry");
        for (var fruit : fruits) {
            System.out.println(fruit.toUpperCase());
        }
    }
}

クイックチェック

Javaにおけるvarの動作を最も適切に説明しているのはどれですか?

まとめ

ローカル変数でvarを使う方法を学びました。

  • コンパイラは初期化子から型を推論します
  • 変数は引き続き強い静的型付けの対象です
  • 同じ行に初期化子が必須です
  • 長いジェネリック型での繰り返しを減らせます
  • プリミティブ型、オブジェクト、配列で使用できます

よくある質問

「ローカル変数にvarを使う」レッスンは無料ですか?

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

「ローカル変数にvarを使う」で何を学びますか?

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

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

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

「ローカル変数にvarを使う」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

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