java运行顺序-JVM之九

Posted muffe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运行顺序-JVM之九相关的知识,希望对你有一定的参考价值。

简化顺序版本是:

  1. 父类的静态成员赋值和静态块,代码排版先后顺序执行,只运行一次
  2. 子类的静态成员赋值和静态块,代码排版先后顺序执行,只运行一次
  3. 父类代码块
  4. 父类构造方法
  5. 子类初始化块
  6. 子类构造方法

再次构造子类,将重复3/4/5/6步骤

 

 

总之:见到静态必先行-》类中代码块-》构造。

 

 

public class Hello {

 

    static class A{

 

        static C c =new C();

 

        public A(){

 

            System.out.println("A‘s Constructor");

 

        }

 

        static {

 

            System.out.println("A‘s static ");

 

        }

 

 

 

    }

 

    static class B extends A{

 

 

 

        public B(){

 

            System.out.println("B‘s Constructor");

 

        }

 

        D d = new D();

 

        C c =new C();

 

        static {

 

            System.out.println("B‘s static ");

 

        }

 

 

 

    }

 

    static class C {

 

        public C(){

 

            System.out.println("C‘s Constructor");

 

 

 

        }

 

        static {

 

            System.out.println("C‘s static");

 

        }

 

    }

 

    static class D{

 

        public D(){

 

            System.out.println("D‘s Constructor");

 

        }

 

        static {

 

            System.out.println("D‘s static");

 

        }

 

    }

 

    public static void main(String args[]){

 

        System.out.println("start");

 

        B b = new B();

 

    }

 

}

 

结果:

start

C‘s static

C‘s Constructor

A‘s static 

B‘s static 

A‘s Constructor

D‘s static

D‘s Constructor

C‘s Constructor

B‘s Constructor

 

第二例子:

http://blog.csdn.net/wenwen091100304/article/details/49488137

以上是关于java运行顺序-JVM之九的主要内容,如果未能解决你的问题,请参考以下文章

jvm系列学习之--Java类的初始化顺序

LoadRunner参数化之九种取值方式

Java - JVM - 线程状态

Jmeter结构体系及运行顺序

深度详解JVM类加载机制

通过Native Memory Tracking查JVM的线程内存使用(线上JVM排障之九)