Java 哪个构造函数初始化变量x3?

Java 哪个构造函数初始化变量x3?,java,initialization,instance-variables,Java,Initialization,Instance Variables,哪个构造函数初始化变量x3 类X的默认构造函数 对象类的默认构造函数 任何构造函数都不会设置变量x3。构造函数==Y。它也不是由对象构造函数设置的,因为它也看不到字段 虚拟机将在运行时将其设置为0。通过这种方式设置此行为可以删除冗余的初始化代码。 请参见:您将看到其默认值 由于Y扩展了X,所以当您执行新的Y时,它最终将调用X作为超类的无参数构造函数。调用构造函数X时,会将类的状态初始化为其默认值 你怎么想?为什么?x3不是instantiated@AlexandruSeverin字段总是初始化的

哪个构造函数初始化变量x3

类X的默认构造函数 对象类的默认构造函数
任何构造函数都不会设置变量x3。构造函数==Y。它也不是由对象构造函数设置的,因为它也看不到字段

虚拟机将在运行时将其设置为0。通过这种方式设置此行为可以删除冗余的初始化代码。
请参见:

您将看到其默认值

由于Y扩展了X,所以当您执行新的Y时,它最终将调用X作为超类的无参数构造函数。调用构造函数X时,会将类的状态初始化为其默认值


你怎么想?为什么?x3不是instantiated@AlexandruSeverin字段总是初始化的,但不总是默认值以外的值。两个构造函数中的哪一个初始化变量x3
class X {
    int x1, x2, x3;
}

class Y extends X {
    int y1;

    Y() {
        x1 = 1;
        x2 = 2;
        y1 = 10;
    }
}

public class Test {
    public static void main(String[] args) {
        Y y = new Y();
        System.out.println(y.x1 + "," + y.x2 + "," + y.x3 + "," + y.y1);
    }
}