初期化していないローカル変数
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
int count;
if (args.length > 0) {
count = 1;
}
System.out.println(count);
}
}
- A
0と出力される - B
1と出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: ローカル変数には初期値 (0) が自動で入りません。
- B: 実行まで進まないので、何も出力されません。
- C: 値が入っていない可能性はコンパイル時に検出されます。
- D: if の条件が false だと count に値が入らないまま使うことになるので、コンパイルエラーです。
ポイント
- ローカル変数には初期値が自動で入りません。値が入っていない可能性がある状態で使うとコンパイルエラーです。
- if の中でだけ代入しているので、条件が false のときに値が無いことになります。