在 Java 中使用静态关键字创建对象
2022-09-04 03:22:52
class abc {
int a = 0;
static int b;
static abc h = new abc(); //line 4
public abc() {
System.out.println("cons");
}
{
System.out.println("ini");
}
static {
System.out.println("stat");
}
}
public class ques {
public static void main(String[] args) {
System.out.println(new abc().a);
}
}
当我编写此代码时,我按如下顺序获得输出:
ini
cons
stat
ini
cons
0
在这里,当我在中创建新对象时,got加载了变量和块,并按写入顺序执行变量和块。当控制来到第 4 行时,将调用实例初始化块。为什么?为什么在第4行创建新对象时不调用静态块,并且直到那时静态块甚至没有被调用一次,所以按照惯例应该调用静态块。为什么会出现这种意外的输出?main(), class abc
static
static abc h = new abc();