【Java SE17 Silver 模擬試験】B-03

Java SE17 Silver 模擬試験
Java SE17 Silver 模擬試験

問題

次のコード断片をコンバイル、実行するとどうなりますか。

Number n = 0b0110;
if (n instanceof Byte b) {
	System.out.println("Byte: " + b);
} else if (n instanceof Short s) {
	System.out.println("Short: " + s);
} else if (n instanceof Integer i) {
	System.out.println("Integer: " + i);
} else if (n instanceof Long l) {
	System.out.println("Long: " + l);
} else {
	System.out.println("Not Integral Number");
}

選択肢

A)コンパイルエラーになる

B)Integer: 6 が出力される

C)Short: 6 が出力される

D)Long: 6 が出力される

E)NumberFormatException が出力される

F)Not Integral Number が出力される

G)Byte: 6 が出力される

解答

A)コンパイルエラーになる

B)Integer: 6 が出力される

C)Short: 6 が出力される

D)Long: 6 が出力される

E)NumberFormatException が出力される

F)Not Integral Number が出力される

G)Byte: 6 が出力される

解説

コードの概要

  1. Number n = 0b0110;
    • 0b0110 はバイナリリテラルで、10進数の 6 を表します。Javaでは、このリテラルは int 型として扱われます。
  2. instanceof 演算子による型チェック
    • nNumber 型ですが、実際には Integer 型であるため、各 if 文で型チェックを行います。

各条件の評価

  • n instanceof Byte b:
    • nByte ではないので、これは false です。
  • n instanceof Short s:
    • nShort ではないので、これも false です。
  • n instanceof Integer i:
    • nInteger 型であるため、これが true になり、i6 が代入されます。
    • "Integer: " + i が実行され、"Integer: 6" が出力されます。
  • n instanceof Long l:
    • この条件は実行されません。
  • else:
    • ここも実行されません。

結論

したがって、このコードを実行すると B)Integer: 6 が出力される になります。

前の問題へ SE17_B-02

前の問題へ SE17_B-04

対象資格:Java SE17 認定資格