zoukankan      html  css  js  c++  java
  • java静态无名函数(静态初始化块)与java的运行流程

    public class Test {



    public Test() {


    System.out.println(" 构造函数");




    @1:静态初始化块
    static


    {


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




    @2:初始化块
    {


    System.out.println("{}");


    }



    public static void main(String[] args) {


    System.out.println("main()");


    }



    }





    运行结果为:


    static{}


    main() 


    程序执行顺序为:静态初始化块static{}-->初始化块{}-->构造函数constructor; 

    注意:即使没有生成new此实例或此类是否有static main()函数,静态初始化块static{}也照样会运行。



    在继承的情况下:


    class Test{


    Test(){


    System.out.println("父类构造函数");


    }


    static{


    System.out.println("父类静态初始化块");

     
    }


    {


    System.out.println("父类初始化块");


    }


    }




    public class  TestChild  extends Test{


    public TestChild() {


    System.out.println("子类构造函数");


    }  


    static


    {


    System.out.println("子类静态初始化块");


    }


    {


    System.out.println("子类初始化块");


    }


    public static void main(String[] args) { 

    new TestChild();


    }



    }


    运行结果:


    父类静态初始化块


    子类静态初始化块


    父类初始化块


    父类构造函数


    子类初始化块


    子类构造函数


    程序运行顺序为:父静态-->子静态-->父初始化及构造-->子初始化及构造;


    注意:初始化块和构造是接连运行的,不会父类子类交替. 

  • 相关阅读:
    简单小巧的跨平台共享内存代码
    调试发行版程序 (二)
    休息日公园独步偶得
    Minimum Depth of Binary Tree
    LeetCode Length of Last word
    黑书 折纸痕 uva 177
    Palindrome Partitioning II leetcode
    Acumem ThreadSpotter
    C++ string int 转换 split
    Valid Palindrome Leetcode
  • 原文地址:https://www.cnblogs.com/wonglou/p/3735167.html
Copyright © 2011-2022 走看看