以下に「変数」について、Java Bronze試験を想定した問題と解答解説を記載します。
問題1: 変数の宣言と初期化
以下のコードについて正しい説明を選びなさい。
public class Example {
public static void main(String[] args) {
int number;
System.out.println(number);
}
}
選択肢:
number変数は初期化されていないため、エラーになる。number変数はデフォルト値の0を出力する。- コンパイルは成功するが、実行時エラーが発生する。
- 変数
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);
}
}
選択肢:
22.02.5- コンパイルエラーが発生する。
解答と解説
解答: 3
解答解説:
- 選択肢1: 誤り。
xとyの計算ではyがdouble型のため、結果はdouble型の計算になります。整数の結果にはなりません。 - 選択肢2: 誤り。
5 / 2.0は2.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;
}
}
選択肢:
- 定数
MAX_VALUEを再代入しているため、コンパイルエラーになる。 - 定数
MAX_VALUEは最初に宣言された値で実行される。 - 実行時エラーが発生する。
- 定数は文字列型のみ使用可能である。
解答と解説
解答: 1
解答解説:
- 選択肢1: 正解。
final修飾子を付けた定数は再代入できません。このコードはコンパイルエラーになります。 - 選択肢2: 誤り。コードはコンパイルエラーになるため実行されません。
- 選択肢3: 誤り。エラーはコンパイル時に発生するため、実行時エラーにはなりません。
- 選択肢4: 誤り。定数は文字列型に限らず、任意のデータ型で使用可能です。
問題4: キャメルケースとスネークケース
以下の変数名について正しい説明を選びなさい。
コード:
int studentAge = 20;
final int MAX_SCORE = 100;
選択肢:
- すべてキャメルケースで記述されている。
- すべてスネークケースで記述されている。
studentAgeはキャメルケース、MAX_SCOREはスネークケースで記述されている。- どちらもキャメルケースで記述されているが、
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);
}
}
選択肢:
20と10が順に出力される。- コンパイルエラーが発生する。
- 実行時に
20が2回出力される。 - スコープが異なるため、エラーにはならないが
10と20が逆に出力される。
解答と解説
解答: 2
解答解説:
- 選択肢1: 誤り。同じスコープ内で同じ名前の変数
numberを再宣言しようとしているため、コンパイルエラーが発生します。 - 選択肢2: 正解。Javaでは、同一スコープ内で同じ名前の変数を再宣言することはできません。このコードでは内部スコープで再度
numberを宣言しようとしているためエラーになります。 - 選択肢3: 誤り。スコープのルールを無視することはできないため、このコードは実行されません。
- 選択肢4: 誤り。同名の変数をスコープ内で再宣言しようとした時点でコンパイルエラーになります。