以下に「変数」について、Java Bronze試験を想定した問題と解答解説を記載します。


問題1: 変数の宣言と初期化

以下のコードについて正しい説明を選びなさい。

public class Example {
    public static void main(String[] args) {
        int number;
        System.out.println(number);
    }
}

選択肢:

  1. number 変数は初期化されていないため、エラーになる。
  2. number 変数はデフォルト値の 0 を出力する。
  3. コンパイルは成功するが、実行時エラーが発生する。
  4. 変数 number はローカル変数ではなく、クラス変数として扱われる。

解答と解説

解答: 1

解答解説:

  • 選択肢1: 正解。ローカル変数は初期化してから使用する必要があります。このコードでは変数 number を初期化せずに参照しているため、コンパイル時エラーが発生します。
  • 選択肢2: 誤り。ローカル変数にデフォルト値はありません。デフォルト値が設定されるのはインスタンス変数やクラス変数の場合です。
  • 選択肢3: 誤り。エラーはコンパイル時に発生するため、実行時エラーは起きません。
  • 選択肢4: 誤り。このコードで number はローカル変数として宣言されています。

問題2: データ型と演算

次のコードを実行した場合、何が出力されますか?

public class Example {
    public static void main(String[] args) {
        int x = 5;
        double y = 2.0;
        System.out.println(x / y);
    }
}

選択肢:

  1. 2
  2. 2.0
  3. 2.5
  4. コンパイルエラーが発生する。

解答と解説

解答: 3

解答解説:

  • 選択肢1: 誤り。xy の計算では ydouble 型のため、結果は double 型の計算になります。整数の結果にはなりません。
  • 選択肢2: 誤り。5 / 2.02.5 を計算するため、正確な結果は 2.5 です。
  • 選択肢3: 正解。整数 x を浮動小数点 y で割ると、double 型の計算が行われ、結果は 2.5 です。
  • 選択肢4: 誤り。コードは正しい構文で書かれているため、コンパイルエラーは発生しません。

問題3: 定数の特徴

次のコードについて正しい説明を選びなさい。

public class Example {
    public static void main(String[] args) {
        final int MAX_VALUE = 100;
        MAX_VALUE = 200;
    }
}

選択肢:

  1. 定数 MAX_VALUE を再代入しているため、コンパイルエラーになる。
  2. 定数 MAX_VALUE は最初に宣言された値で実行される。
  3. 実行時エラーが発生する。
  4. 定数は文字列型のみ使用可能である。

解答と解説

解答: 1

解答解説:

  • 選択肢1: 正解。final 修飾子を付けた定数は再代入できません。このコードはコンパイルエラーになります。
  • 選択肢2: 誤り。コードはコンパイルエラーになるため実行されません。
  • 選択肢3: 誤り。エラーはコンパイル時に発生するため、実行時エラーにはなりません。
  • 選択肢4: 誤り。定数は文字列型に限らず、任意のデータ型で使用可能です。

問題4: キャメルケースとスネークケース

以下の変数名について正しい説明を選びなさい。

コード:

int studentAge = 20;
final int MAX_SCORE = 100;

選択肢:

  1. すべてキャメルケースで記述されている。
  2. すべてスネークケースで記述されている。
  3. studentAge はキャメルケース、MAX_SCORE はスネークケースで記述されている。
  4. どちらもキャメルケースで記述されているが、MAX_SCORE に間違いがある。

解答と解説

解答: 3

解答解説:

  • 選択肢1: 誤り。MAX_SCORE はスネークケースで記述されています。
  • 選択肢2: 誤り。studentAge はキャメルケースで記述されています。
  • 選択肢3: 正解。studentAge はキャメルケース(単語の先頭を小文字にし、2つ目以降の単語の先頭を大文字にする)、MAX_SCORE はスネークケース(単語をすべて大文字で記述し、アンダースコアで区切る)で記述されています。
  • 選択肢4: 誤り。MAX_SCORE の記述に間違いはありません。

問題5: 変数のスコープ

次のコードについて、正しい説明を選びなさい。

public class Example {
    public static void main(String[] args) {
        int number = 10;
        {
            int number = 20;
            System.out.println(number);
        }
        System.out.println(number);
    }
}

選択肢:

  1. 2010 が順に出力される。
  2. コンパイルエラーが発生する。
  3. 実行時に 20 が2回出力される。
  4. スコープが異なるため、エラーにはならないが 1020 が逆に出力される。

解答と解説

解答: 2

解答解説:

  • 選択肢1: 誤り。同じスコープ内で同じ名前の変数 number を再宣言しようとしているため、コンパイルエラーが発生します。
  • 選択肢2: 正解。Javaでは、同一スコープ内で同じ名前の変数を再宣言することはできません。このコードでは内部スコープで再度 number を宣言しようとしているためエラーになります。
  • 選択肢3: 誤り。スコープのルールを無視することはできないため、このコードは実行されません。
  • 選択肢4: 誤り。同名の変数をスコープ内で再宣言しようとした時点でコンパイルエラーになります。