Java运行顺序(转)

一。JAVA中执行顺序

  1. 静态块
  2. 构造器
  3. 父类构造器

二。JAVA中赋值顺序

  1.       静态块直接赋值
  2.       块直接赋值
  3.       父类继承的属性已赋值
  4.       静态变量声明时赋值
  5.       成员变量声明时赋值
  6.       构造器赋值

 第一部分很好测试,我们只需要写一个子类,类中定义一个静态块,一个普通块,一个构造器,它的父类构造器,都打印一条语句,即可明白它们直接的执行顺序

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.   静态块
  2.   父类构造器
  3.   本类中的块
  4.   本类的构造器

修改程序再次测:

 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 }

结果为:

也就是说此时的运行顺序为:

  1.    父类静态块
  2.    自身静态块
  3.    父类块
  4.    父类构造器
  5.    自身块
  6.    自身构造器 

 

posted @ 2017-04-01 23:09  努力的小谢  阅读(75)  评论(0)    收藏  举报