Java Silver試験対策の一環として、変数のスコープに関する問題に挑戦してみましょう。
問題
以下のプログラムを実行した場合、コンソールに表示される出力はどれでしょうか?
public class VariableScopeExample {
public static void main(String[] args) {
int number = 5;
if (number > 0) {
int number = 10;
}
System.out.println(number);
}
}
選択肢
- A. 5
- B. 10
- C. コンパイルエラー
- D. 実行時エラー
答えと解説
回答を見る
答え
C. コンパイルエラー
解説
この問題を解く上で注目する点は、変数のスコープと重複定義のルールです。
- 基本説明: Javaでは同じスコープ内で同じ名前の変数を二度定義することはできません。変数「number」は、
main
メソッド内で最初に定義されています。 - 誤答理由:
if
ブロックの内側で再度「number」という変数を定義しようとしていますが、これによりコンパイルエラーが発生します。 - つまずきポイント: 開始したばかりのプログラマーは、ブロック内で同じ名前の変数を再度使用することができると誤解することがあります。しかし、変数は外側で既に定義されているため、再定義は許可されません。
- 発展知識: ローカル変数は、定義されたブロックやメソッドの中だけで有効です。このローカルスコープでは、メソッドの中であれば同じ名前を使うことができませんが、異なるメソッドやクラスで同じ名前を使用することは許可されています。