相关疑难解决方法(0)

在Java中使用static关键字创建对象

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);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我写这段代码时,我按顺序得到输出:

ini
cons
stat
ini
cons
0
Run Code Online (Sandbox Code Playgroud)

这里当我在main(), class abc加载中创建一个新对象时,static变量和块按顺序执行.当控制进入第4行时,static abc h = new abc();将调用实例初始化块.为什么?为什么在第4行创建新对象时不调用静态块,直到那时静态块也没有被调用一次,所以根据惯例,应该调用静态块.为什么会出现这种意外的输出?

java static initialization

14
推荐指数
2
解决办法
1287
查看次数

标签 统计

initialization ×1

java ×1

static ×1