Java运行顺序(转)
一。JAVA中执行顺序
- 静态块
- 块
- 构造器
- 父类构造器
二。JAVA中赋值顺序
- 静态块直接赋值
- 块直接赋值
- 父类继承的属性已赋值
- 静态变量声明时赋值
- 成员变量声明时赋值
- 构造器赋值
第一部分很好测试,我们只需要写一个子类,类中定义一个静态块,一个普通块,一个构造器,它的父类构造器,都打印一条语句,即可明白它们直接的执行顺序
Mastiff类
1 public class Dog {
2 public Dog() {
3 System.out.println("Dog");
4 }
5 }
6 class Mastiff extends Dog {
7 public Mastiff() {
8 System.out.println("Mastiff");
9 }
10
11 {
12 System.out.println("block");
13 }
14 static {
15 System.out.println("static block");
16 }
17
18 public static void main(String[] args){
19 Mastiff mastiff=new Mastiff();
20
21 }
22 }
输出结果为:

在我们的程序中,实例化一个类对象的时候,运行顺序为:
- 静态块
- 父类构造器
- 本类中的块
- 本类的构造器
修改程序再次测:
1 public class Dog {
2 public Dog() {
3 System.out.println("Dog");
4 }
5 static{
6 System.out.println("super static block");
7 }
8
9 {
10 System.out.println("super block");
11 }
12 }
13 class Mastiff extends Dog {
14 public Mastiff() {
15 System.out.println("Mastiff");
16 }
17
18 {
19 System.out.println("block");
20
21 }
22 static {
23 System.out.println("static block");
24 }
25
26 public static void main(String[] args){
27 Mastiff mastiff=new Mastiff();
28 }
29 }
结果为:
也就是说此时的运行顺序为:
- 父类静态块
- 自身静态块
- 父类块
- 父类构造器
- 自身块
- 自身构造器

浙公网安备 33010602011771号