まず、元の設問のコードとその結果について説明します。その後、this.val = val;
を設定するように変更したコードについて説明します。
元の設問のコード
public class Main {
private String val; // String型のフィールド
private int num; // int型のフィールド
// numを引数として受け取るコンストラクタ
public Main(int num) {
this.num = num; // numフィールドに引数の値を設定
}
// デフォルトコンストラクタ
public Main() {
this.val = "test"; // valフィールドに"test"を設定
this.num = 10; // numフィールドに10を設定
}
public static void main(String[] args) {
Main m = new Main(20); // 引数20でMainのインスタンスを作成
System.out.println(m.val + ", " + m.num); // valとnumを出力
}
}
このコードの結果は以下の通りです:
-
Main m = new Main(20);
では、引数20
を持つコンストラクタが呼び出され、num
フィールドに20
が設定されます。 -
val
フィールドは設定されないため、デフォルト値のnull
のままです。 - 出力は
null, 20
となります。
したがって、元の設問の答えはAの「null, 20」と表示されるです。
this.val = val;
を設定したコード
次に、val
フィールドを引数として設定するように変更したコードを見てみましょう:
public class Main {
private String val; // String型のフィールド
private int num; // int型のフィールド
// valとnumを引数として受け取るコンストラクタ
public Main(String val, int num) {
this.val = val; // valフィールドに引数の値を設定
this.num = num; // numフィールドに引数の値を設定
}
// デフォルトコンストラクタ
public Main() {
this.val = "test"; // valフィールドに"test"を設定
this.num = 10; // numフィールドに10を設定
}
public static void main(String[] args) {
Main m = new Main("custom value", 20); // valとnumを引数に持つMainのインスタンスを作成
System.out.println(m.val + ", " + m.num); // valとnumを出力
}
}
このコードの結果は以下の通りです:
-
Main m = new Main("custom value", 20);
では、引数"custom value"
と20
を持つコンストラクタが呼び出され、val
フィールドに"custom value"
、num
フィールドに20
が設定されます。 - 出力は
custom value, 20
となります。
この方法で、val
フィールドを適切に設定して出力することができます。
補足
1. public class Main {
2. private String val; // 文字列を格納するプライベート変数val
3. private int num; // 整数を格納するプライベート変数num
4.
5. public Main(int num) { // 整数numを引数にとるコンストラクタ
6. this.num = num; // 引数で受け取ったnumでインスタンス変数numを初期化
7. this.val = "initialized"; // ここでvalを"initialized"で初期化
8. }
9.
10. public Main() { // 引数なしのコンストラクタ
11. this.val = "test"; // インスタンス変数valを文字列"test"で初期化
12. this.num = 10; // インスタンス変数numを整数10で初期化
13. }
14.
15. public static void main(String[] args) {
16. Main m = new Main(); // Mainクラスのオブジェクトmを作成、引数なしコンストラクタMain()を呼び出す
17. System.out.println(m.val + ", " + m.num); // mのvalとnumを表示
18. }
19. }
この変更後のmain
メソッドでは、Main()
コンストラクタを使用してオブジェクトm
を作成します。この場合、val
は"test"に、num
は10に初期化されるため、System.out.println(m.val + ", " + m.num);
の出力は "test, 10"
となります。
Top comments (0)