ローカル変数に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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ローカル変数にvarを使う
- varで可読性が向上する場合
- forループ内のvar
- varの制限