本例中是否调用java默认构造函数
我有这门课
class A {
int a;
int b;
int c;
A() {
a = 3;
b = 4;
}
}
这是初始化两个实例变量的构造函数。第三个实例变量会发生什么变化?它将由默认构造函数初始化吗?如果是,通话顺序是什么
你可以在下面搜索框中键入要查询的问题!
我有这门课
class A {
int a;
int b;
int c;
A() {
a = 3;
b = 4;
}
}
这是初始化两个实例变量的构造函数。第三个实例变量会发生什么变化?它将由默认构造函数初始化吗?如果是,通话顺序是什么
# 1 楼答案
如果使用
javap
反编译类,您会发现:即使不知道这个字节码是什么意思,您也可以看到
a
和b
在构造函数中被提到(这是它们在构造函数中被赋值的地方),但是c
的唯一提及是在字段声明中,int c
。所以构造器中的c
没有发生任何变化由于没有显式初始化,它将具有默认的初始值,如JLS Sec 4.12.5中所述
因此
c
的值为零,但不是调用构造函数的结果(就JVM而言,这与创建实例不同)