以下に「演算子」について、Java Bronze試験を想定した問題と解答解説を記載します。
問題1: 算術演算子の優先順位
次のコードを実行した場合、何が出力されますか?
public class Example {
public static void main(String[] args) {
System.out.println(1 + 5 % 2);
}
}
選択肢:
0123
解答と解説
解答: 3
解答解説:
- 剰余(
%)演算子は、足し算(+)より優先順位が高いため、先に計算されます。 5 % 2は1となり、次に1 + 1を計算して2が出力されます。- 他の選択肢は、優先順位の誤解や計算ミスによるものです。
問題2: 文字列の結合
次のコードを実行した場合、出力結果を選びなさい。
public class Example {
public static void main(String[] args) {
System.out.println("1 + 2 = " + 1 + 2);
}
}
選択肢:
1 + 2 = 31 + 2 = 123- コンパイルエラーが発生する
解答と解説
解答: 2
解答解説:
- 文字列と数値が混在した場合、「
+」演算子は左結合のルールに従います。 "1 + 2 = " + 1が最初に計算され、結果は"1 + 2 = 1"となります。その後、+ 2が結合されて"1 + 2 = 12"となります。- 選択肢1: 誤り。括弧を使用しない限り、計算結果は文字列として処理されます。
- 選択肢3: 誤り。計算結果を直接数値として処理しません。
- 選択肢4: 誤り。コードに誤りはないためコンパイルエラーは発生しません。
問題3: キャスト演算子
次のコードを実行した場合、出力結果を選びなさい。
public class Example {
public static void main(String[] args) {
int i = (int)3.9;
System.out.println(i);
}
}
選択肢:
33.9- コンパイルエラーが発生する
- 実行時エラーが発生する
解答と解説
解答: 1
解答解説:
- キャスト演算子
(int)を使用することで、3.9の小数点以下が切り捨てられ、整数3が出力されます。 - 選択肢2: 誤り。キャストにより小数部分は切り捨てられるため、
3.9は表示されません。 - 選択肢3: 誤り。キャストが正しく指定されているためコンパイルエラーは発生しません。
- 選択肢4: 誤り。実行時エラーは発生しません。
問題4: 剰余演算子
次のコードを実行した場合、出力される値を選びなさい。
public class Example {
public static void main(String[] args) {
System.out.println(10 % 3);
}
}
選択肢:
1310- コンパイルエラーが発生する
解答と解説
解答: 1
解答解説:
- 剰余(
%)演算子は、割り算の余りを計算します。 10 % 3は、10 を 3 で割った余りである1を返します。- 選択肢2: 誤り。
3は割り算の商ではなく、余りとして扱われません。 - 選択肢3: 誤り。
10は剰余演算子の計算結果にはなりません。 - 選択肢4: 誤り。コードは正しいため、コンパイルエラーは発生しません。
問題5: インクリメントの前置と後置
次のコードを実行した場合、何が出力されますか?
public class Example {
public static void main(String[] args) {
int i = 5;
System.out.println(++i);
System.out.println(i++);
System.out.println(i);
}
}
選択肢:
5, 5, 66, 6, 76, 5, 6- コンパイルエラーが発生する
解答と解説
解答: 2
解答解説:
- 1行目:
++iは前置インクリメントのため、iが 1 増加して6となり、その値が出力されます。 - 2行目:
i++は後置インクリメントのため、現在の値6が出力された後にiが 1 増加します。 - 3行目: 最終的に増加した
iの値である7が出力されます。 - 選択肢1: 誤り。前置インクリメントの結果が反映されていません。
- 選択肢3: 誤り。後置インクリメントの影響が反映されていません。
- 選択肢4: 誤り。コードに誤りはないためコンパイルエラーは発生しません。