カテゴリ: JavaSilver試験対策 更新日: 2026/03/24

Javaのvar型の基礎知識を完全解説!初心者でも理解できる型推論

015
Javaのvar型の基礎

先生と生徒の会話形式で理解しよう

生徒

「Javaでvarって何ですか?どう使うんですか?」

先生

varはJavaの型推論機能です。ローカル変数の型を省略して宣言できる便利な機能ですよ。」

生徒

「型を省略するとエラーになることもあるんですか?」

先生

「そうですね。どのような場合にエラーになるのか、一緒に見ていきましょう!」

1. var型とは?

1. var型とは?
1. var型とは?

varはJava 10から追加されたローカル変数の型推論機能です。varを使用すると、型を明示的に指定せずに変数を宣言できます。例えば、次のように使用します。


public class VarExample {
    public static void main(String[] args) {
        var number = 100; // 推論される型はint
        System.out.println(number); // 出力: 100
    }
}

このように、varを使うとコンパイラが右辺の値から型を推論します。ただし、varはローカル変数にのみ使用可能で、クラス変数やメソッドの引数には使えません。

2. varを使用する際の注意点

2. varを使用する際の注意点
2. varを使用する際の注意点

varを正しく使うためにはいくつかの注意点があります。特に、初期化が不十分な場合や推論できない場合にはコンパイルエラーになります。

2.1 初期化しない場合

次のコードではコンパイルエラーになります。なぜなら、右辺の値がないため型を推論できないからです。


public class VarErrorExample {
    public static void main(String[] args) {
        var value; // エラー: 初期化されていない
    }
}

2.2 nullで初期化する場合

次に、nullで初期化する場合です。これも型が推論できないためエラーとなります。


public class VarNullExample {
    public static void main(String[] args) {
        var data = null; // エラー: 型を特定できない
    }
}

3. 配列の初期化と型推論

3. 配列の初期化と型推論
3. 配列の初期化と型推論

配列の初期化にvarを使う際も注意が必要です。例えば、次のコードはエラーになります。


public class VarArrayExample {
    public static void main(String[] args) {
        var array = {10, 20, 30}; // エラー: 型を特定できない
    }
}

配列を初期化する場合は、int[] array = {10, 20, 30};のように明示的に型を指定するか、右辺にnew int[]を使う必要があります。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. ジェネリクスと型推論

4. ジェネリクスと型推論
4. ジェネリクスと型推論

ジェネリクスを使用する場合、varはダイヤモンド演算子<>と組み合わせて使うことができます。例えば、次のように書くと型が推論されます。


import java.util.ArrayList;

public class VarGenericsExample {
    public static void main(String[] args) {
        var list = new ArrayList<String>();
        list.add("Java");
        System.out.println(list.get(0)); // 出力: Java
    }
}

ただし、ダイヤモンド演算子を使わずにnew ArrayList()とすると、型がObjectとして推論される場合があります。そのため、ジェネリクスは明示的に指定するのが望ましいです。

5. ラムダ式の制限

5. ラムダ式の制限
5. ラムダ式の制限

ラムダ式を使用する場合、varでは型を推論できないためエラーになります。例えば、次のコードはコンパイルエラーとなります。


public class VarLambdaExample {
    public static void main(String[] args) {
        var func = () -> System.out.println("Hello"); // エラー: 型を推論できない
    }
}

ラムダ式を使う場合は、Runnableなどのインターフェースを明示的に指定する必要があります。

6. varが使える場所と使えない場所

6. varが使える場所と使えない場所
6. varが使える場所と使えない場所

varは非常に便利ですが、Javaのどこでも使えるわけではありません。使用できるのは「ローカル変数」のみという厳しいルールがあります。

プログラミング未経験の方が間違いやすい、varが使えない代表的なケースを確認しておきましょう。


public class VarScopeExample {
    // var field = 10; // エラー: クラスのフィールド(メンバー変数)には使えません
    
    // public void method(var param) { // エラー: メソッドの引数には使えません
    // }

    public static void main(String[] args) {
        var local = "これはOK"; // 成功: メソッド内のローカル変数ならOK
        System.out.println(local);
    }
}

このように、varはあくまで「メソッドの中で一時的に使う変数」のための機能です。クラス全体の設計に関わる場所では、これまで通り明示的に型を書く必要があります。

7. 型推論後の型変更はできない

7. 型推論後の型変更はできない
7. 型推論後の型変更はできない

varを使うと「動的型付け(JavaScriptやPythonのような性質)」になったと勘違いしがちですが、Javaはあくまで「静的型付け」の言語です。

一度コンパイラによって型が決定(推論)された後は、その変数に別の型の値を代入することはできません。


public class VarTypeFixedExample {
    public static void main(String[] args) {
        var message = "Hello"; // ここでString型として確定する
        
        message = "Java"; // 正常: 同じString型なら代入可能
        // message = 100; // エラー: String型の変数にint型は入れられません
        
        System.out.println(message);
    }
}

実行結果:


Java

varはあくまで「型の記述を省略する」だけであり、変数の性質そのものを変えるものではないという点に注意しましょう。

8. 実践:可読性を高めるvarの使いどころ

8. 実践:可読性を高めるvarの使いどころ
8. 実践:可読性を高めるvarの使いどころ

varを使う最大のメリットは、型名が非常に長い場合にコードをスッキリと読みやすくできることです。

例えば、複雑なクラス名が登場する以下のコードを比較してみましょう。


import java.util.HashMap;
import java.util.Map;

public class BestPracticeExample {
    public static void main(String[] args) {
        // 1. varを使わない場合(型名が繰り返されて冗長)
        Map<String, String> map1 = new HashMap<String, String>();

        // 2. varを使う場合(右辺を見れば型が明らかなのでスッキリ!)
        var map2 = new HashMap<String, String>();
        
        map2.put("key", "value");
        System.out.println(map2.get("key"));
    }
}

このように、右辺に new クラス名() がある場合は、左辺に同じ型を書かなくても意味が通じます。逆に、右辺がメソッドの戻り値などで型が直感的に分からない場合は、あえて var を使わずに型を明示する方が親切なコードになります。

まとめ

まとめ
まとめ

この記事では、Javaのvar型を使用するための基礎知識や注意点について学びました。varを活用することで、コードの簡潔さや可読性を向上させることができますが、初期化が不十分だったり、型推論ができないケースではコンパイルエラーが発生するため、適切な使い方が求められます。特に、以下のポイントを押さえることが重要です。

  • 初期化が必須:変数を宣言する際には、初期化して型を推論可能にする。
  • nullでの初期化は不可:nullだけでは型が特定できないためエラーとなる。
  • 配列やラムダ式の制限:特定の構文では型推論ができないため注意が必要。
  • ジェネリクスとの組み合わせ:ダイヤモンド演算子を活用して型を明示する。

これらを理解することで、varのメリットを最大限に活用しながら、コードの品質を維持することができます。


public class VarSummaryExample {
    public static void main(String[] args) {
        // 正しいvarの使用例
        var number = 123; // 推論: int
        var text = "Hello, Java!"; // 推論: String
        var list = new ArrayList<String>(); // 推論: ArrayList<String>
        list.add("Sample");
        System.out.println(list.get(0)); // 出力: Sample
    }
}

上記のコード例は、varを適切に使った場合の例です。これらを参考に、コードを書く際の基礎を押さえていきましょう。

先生と生徒の振り返り会話

生徒

varを使えば、もっと短くてわかりやすいコードが書けそうです!」

先生

「その通りですね。ただ、使い方を間違えるとエラーの原因にもなるので、ルールをしっかり覚えておきましょう。」

生徒

「特にnullや配列の初期化で気をつけるべきことがわかりました!」

先生

「いい理解ですね。次回は、varを使った応用的なコード例にも挑戦してみましょう!」

生徒

「はい、楽しみにしています!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaのvar型って何ですか?型推論とはどういう意味ですか?

Javaのvar型は、Java 10から導入されたローカル変数用の型推論機能です。明示的に型を書かなくても、代入する値からコンパイラが型を自動で推測してくれる便利な機能です。

Javaでvar型を使うときに初期化は必須ですか?

はい、Javaのvar型は初期化が必須です。右辺の値がないとコンパイラが型を推論できないため、初期化されていない状態ではエラーになります。

Javaのvar型でnullを代入することはできますか?

いいえ、var型でnullを代入するだけではコンパイルエラーになります。nullだけでは型が特定できないため、推論ができないのです。
JavaSilver試験対策の一覧へ
新着記事
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
Java
Java のカレンダー機能(java.util.Calendar)の使い方
JavaのCalendarクラスの使い方をわかりやすく解説!日付や時刻の操作に便利な基本機能まとめ
Flutter
Dartのパッケージ管理(pubspec.yaml)の使い方
FlutterとDartのパッケージ管理完全ガイド!pubspec.yamlの使い方を初心者向けに徹底解説
Java
Java のミリ秒(Unix タイムスタンプ)を取得・変換する方法
JavaでUnixタイムスタンプ(ミリ秒)を取得・変換する方法を徹底解説!
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク