DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on • Updated on

13章53

まず、元の設問のコードとその結果について説明します。その後、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を出力
    }
}
Enter fullscreen mode Exit fullscreen mode

このコードの結果は以下の通りです:

  • 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を出力
    }
}
Enter fullscreen mode Exit fullscreen mode

このコードの結果は以下の通りです:

  • 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. }
Enter fullscreen mode Exit fullscreen mode

この変更後のmainメソッドでは、Main() コンストラクタを使用してオブジェクトmを作成します。この場合、valは"test"に、numは10に初期化されるため、System.out.println(m.val + ", " + m.num); の出力は "test, 10" となります。

Top comments (0)