构造函数链接会在Java中创建多个对象吗?

构造函数链接会在Java中创建多个对象吗?,java,this,constructor-chaining,Java,This,Constructor Chaining,如果我使用这个关键字调用同一类的另一个构造函数。它会创建两个对象吗 如果是,以下示例中哪个对象将处于活动状态: Class Sample { int a; String b; Sample() { this("Hello"); a=10; } Sample(String temp) { b = temp; } } 我想知道构造函数链接的行为。请解释它是如何工作的?否,构造函数链接不会创建

如果我使用这个关键字调用同一类的另一个构造函数。它会创建两个对象吗

如果是,以下示例中哪个对象将处于活动状态:

Class Sample {
    int a;
    String b;

    Sample() {
        this("Hello");
        a=10;
    }

    Sample(String temp) {
        b = temp;
    }    
}

我想知道构造函数链接的行为。请解释它是如何工作的?

否,构造函数链接不会创建其他实例,它只是执行链接构造函数的逻辑,允许您重用其代码。


这个(“你好”)
这里将调用
Sample(String temp)
constructor,它不会创建另一个对象。

正如其他人提到的,您只会得到一个对象,每个构造函数初始化同一个对象

最好亲自看看:

public class Sample {
    int a;
    String b;

    Sample() {
        this("Hello");
        a=10;
        System.out.println("B: "+ hashCode());
    }

    Sample(String temp) {
        b = temp;
        System.out.println("A: "+ hashCode());
    }

    public static void main(String[] args) {
        new Sample();
    }

}

请注意,如果您试图访问未初始化的字段,则在未完全初始化的对象上调用实例方法可能会导致问题,请小心处理。

谢谢您的输入。因此,这意味着,它与调用另一个方法相同。@user3232754它不完全相同。对另一个构造函数的调用必须是构造函数中的第一行,而另一个构造函数隐式调用超类的构造函数。此外,您只能从构造函数进行此调用。如果它和任何其他方法一样,您可以从任何方法调用它。