• 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

  • 相关阅读:
    数据库练习
    pymysql
    数据库索引
    数据库查询
    数据库操作
    数据库建表
    数据库初识
    shell 编程
    Struts2与SpringMVC
    SpringAOP
  • 原文地址:https://www.cnblogs.com/muffe/p/6579962.html
Copyright © 2020-2023  润新知