ブロックの中で宣言した変数
このコードを実行するとどうなるか。
public class Main {
public static void main(String[] args) {
int total = 0;
if (total == 0) {
int bonus = 5;
total += bonus;
}
System.out.println(total + bonus);
}
}
- A
10と出力される - B
5と出力される - C 実行時に例外が発生する
- D コンパイルエラーになる
正解と解説を見る
正解: D
- A: 実行まで進まないので、何も出力されません。
- B: 実行まで進まないので、何も出力されません。
- C: スコープの誤りはコンパイル時に見つかります。
- D: bonus は if のブロックの中で宣言したので、ブロックの外では使えずコンパイルエラーです。
ポイント
- 変数のスコープは、宣言した
{ }のブロックの中だけです。bonus は if のブロックの外では使えません。