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

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

問題

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

public class Main {
	public static void main(String[] args) {
		long x, y, z;
		x = 100;
		y = 1000L;
		System.out.println("x:" + x + ", y:" + y + ", Z:" + z);
	}
}

選択肢

A)NumberFormatException がスローされる

B)x:100, y:1000, z:null が出力される

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

D)x:100, y:1000L, z:0 が出力される

E)x:100, y:1000, z:0 が出力される

F)x:100, y:1000L, z:null が出力される

G)NullPointerException がスローされる

解答

A)NumberFormatException がスローされる

B)x:100, y:1000, z:null が出力される

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

D)x:100, y:1000L, z:0 が出力される

E)x:100, y:1000, z:0 が出力される

F)x:100, y:1000L, z:null が出力される

G)NullPointerException がスローされる

解説

各行の解説

  1. 変数の宣言:
    • long x, y, z; では、3つの long 型変数を宣言しています。
    • しかし、これらの変数は初期化されていないため、使用する前に値を設定する必要があります。
  2. x の初期化:
    • x = 100;x100 を代入しています。この操作は問題ありません。
  3. y の初期化:
    • y = 1000L;y1000L を代入しています。1000Llong 型のリテラルであり、こちらも問題ありません。
  4. z の使用:
    • System.out.println("x:" + x + ", y:" + y + ", z:" + z); では、z を使用していますが、z は初期化されていません。Javaではローカル変数は自動的に初期化されないため、使用する前に必ず値を設定する必要があります。
    • 初期化されていない変数を使用すると、コンパイル時にエラーが発生します。具体的には「変数 z が初期化されていません」といったエラーメッセージが表示されます。

結論

このコードはコンパイルエラーになり、正しい選択肢は:

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

注意点

  • もし z に何らかの値(例えば 0)を代入してから出力する場合、コードは正常に動作し、z の値が表示されることになります。しかし、現状のコードでは z は初期化されていないため、エラーが発生します。

前の問題へ SE17_B-29

次の問題へ SE17_B-31

対象資格:Java SE17 認定資格