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

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

問題

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

public class Main {
	public static void main(String... args) {
		MyClass c = new MyClass();
		c.calc(10, 3.14f);
	}
}

class MyClass {
	public void calc(long a, float b) {
		System.out.print("A: " + a + b);
	}
	public void calc(int a, Float b) {
		System.out.print("B: " + a + b);
	}
	public void calc(Integer a, double b) {
		System.out.print("D: " + a + b);
	}
}

選択肢

A)C: 103.14 が出力される

B)B: 13.14が出力される

C)A: 13.14が出力される

D)NumberFormatException がスローされる

E)C: 13.14が出力される

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

G)A: 103.14 が出力される

H)B: 103.14 が出力される

解答

A)C: 103.14 が出力される

B)B: 13.14が出力される

C)A: 13.14が出力される

D)NumberFormatException がスローされる

E)C: 13.14が出力される

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

G)A: 103.14 が出力される

H)B: 103.14 が出力される

解説

public class Main {
	public static void main(String... args) {
		MyClass c = new MyClass();      //1. インスタンス化
		c.calc(10, 3.14f);   //2. 引数に10と3.14f
	}
}

class MyClass {
	public void calc(long a, float b) {     //3. 2からの引数の10と3.14fを受け取る
		System.out.print("A: " + a + b);      //4. A: 103.14を出力
	}
	public void calc(int a, Float b) {      //Floatはラッパークラスで、float型を受け取れない
		System.out.print("B: " + a + b);
	}
	public void calc(Integer a, double b) {     //Integerはラッパークラスで、long型を受け取れない
		System.out.print("D: " + a + b);
	}
}

MyClass c = new MyClass();MyClass のインスタンスを作成します。c.calc(10, 3.14f); が呼ばれると、引数は int 型の 10float 型の 3.14f です。メソッド calc(long a, float b) が呼ばれます。int 型の 10long 型に自動的に変換されるため、a には 10 が渡され、b には 3.14f が渡されます。System.out.print("A: " + a + b); により、103.14 が連結されて出力されます。ここで、a10b3.14 なので、最終的に出力は A: 13.14 になります。

前の問題へ SE17_A-14

次の問題へ SE17_A-16


対象資格:Java SE17 認定資格