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();


    }



    }


    运行结果:


    父类静态初始化块


    子类静态初始化块


    父类初始化块


    父类构造函数


    子类初始化块


    子类构造函数


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


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

  • 相关阅读:
    iframe应用 相互之间发送消息 postMessage
    function angular.bootstrap()
    总结
    1-angular.bind
    jQuery treeTable v 1.4.2
    声明了一个模块和一个控制器AngularJS的处理过程
    angularJs $templateCache
    $.fn.zTree 的使用
    Java异常throws与throw的区别
    Pom报错
  • 原文地址:https://www.cnblogs.com/wonglou/p/3735167.html
Copyright © 2011-2022 走看看