【Java SE17 Silver 模擬試験】A-38

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

問題

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

public class Main {
	public static void main(String... args) {
		Person p = new Person("Duke");
		System.out.println(p);
	}
}

class Person {
	String name;

	Person() {
	}

	Person(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}
}

選択肢

A)NullPointerException がスローされる

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

C)null が出力される

D)Duke が出力される

E)Person@7a81197d が出力される

F)Person が出力される

解答

A)NullPointerException がスローされる

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

C)null が出力される

D)Duke が出力される

E)Person@7a81197d が出力される

F)Person が出力される

解説

このコードをコンパイル、実行すると、E)Person@7a81197d が出力される という結果になります。

1. メインメソッド

public static void main(String... args) {
    Person p = new Person("Duke");
    System.out.println(p);
}

Person クラスのインスタンス pnew Person("Duke") で作成しています。このとき、name フィールドに "Duke" が設定されます。

System.out.println(p)
System.out.println にオブジェクトを渡すと、toString() メソッドが呼び出されます。
Person クラスには toString() メソッドがオーバーライドされていないため、Object クラスの toString() メソッドが使用されます。
Object クラスの toString() メソッドは、オブジェクトのクラス名とハッシュコード(16進数)を含む文字列を返します。例えば、Person@7a81197d のようになります。

結論

したがって、実行結果は E)Person@7a81197d が出力される です。

前の問題へ SE17_A-37

次の問題へ SE17_A-39


対象資格:Java SE17 認定資格