Java类初始化顺序,大神3个示例带你躺坑。。

最近发现微信群里面有些群友在讨论类的初始化顺序,如类的静态变量、成员变量、静态代码块、非静态代码块、构造器,及继承父类时,它们的初始化顺序都是怎样的,下面我通过例子来说明这个情况,以免被人误导。

示例1:测试单类的初始化顺序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class ClassInitOrderTest {

public static String staticField = "static field";

static {
System.out.println(staticField);
System.out.println("static block");
}

private String field = "member field";

{
System.out.println(field);
System.out.println("non-static block");
}

public ClassInitOrderTest() {
System.out.println("constructor");
}

public static void main(String[] args) {
new ClassInitOrderTest();
}

}

程序输出:

1
2
3
4
5
static field
static block
member field
non-static block
constructor

可以得出以下结论,单类的初始化顺序为:

发布于 2020-04-01 21:08:45
分享
海报
181
上一篇:Java中的宏变量,宏替换详解。下一篇:一张图搞清楚Java异常机制
目录

    忘记密码?

    图形验证码