此问题已在此处有答案:
Are fields initialized before constructor code is run in Java?(5个答案)
12小时前关闭。
想想看
class SomeClass {
private int fieldA;
private int fieldB = fieldA + 1;
SomeClass(int fieldA) {
this.fieldA = fieldA;
}
}
假设我这样调用构造函数:new SomeClass(5)
。fieldB
的值是多少?它会在构造函数代码执行后被初始化吗(所以fieldB
等于6)?或者它会在构造函数代码之前被初始化(所以fieldB
等于1)?
1条答案
按热度按时间2vuwiymt1#
这些字段将在执行 * 构造函数代码之前 * 被初始化。因此,由于
fieldA
默认为零(就像int
一样),fieldB
将等于1。这里有一个你可以运行的片段