【发布时间】:2014-10-23 10:18:14
【问题描述】:
我们知道……
实例变量在默认构造函数中初始化。例如。
public class H{
int x;
public static void main(String... args){
System.out.print(new H().x);
}
}
上面代码的O/P是0,因为有一个默认的构造函数被调用,并且该构造函数将x初始化为0。
现在,我的问题是,如果我们运行下面的代码,即
public class H{
int x;
public H(){}
public static void main(String... args){
System.out.print(new H().x);
}
}
在这种情况下实际的O/P也是0,但我认为应该有编译器错误x没有初始化,因为我们已经覆盖了默认构造函数并且没有初始化x我认为我已经把我的问题说清楚了..
【问题讨论】:
-
实例变量根据其类型初始化为默认值。
-
但是初始化是在默认构造函数中完成的,我的问题是在第二个代码中,对默认构造函数的调用永远不会发生..
-
字段初始化发生在构造函数调用之前。
标签: java constructor instance-variables