zoukankan      html  css  js  c++  java
  • Java类的执行顺序

      在Java中一个类包括:构造块、构造方法、静态块、main方法、普通方法。

      通过下面的例子将看出一个类中各种方法的执行顺序:

     1 /**
     2  * @author zhengbinMac
     3  */
     4 public class Test2 {
     5     static {
     6         System.out.println("静态块");
     7     }
     8     public Test2() {
     9         System.out.println("构造方法");
    10     }
    11     {
    12         System.out.println("构造块");
    13     }
    14     public void ok() {
    15         System.out.println("OK()");
    16     }
    17     public static void main(String[] args) {
    18         System.out.println("main()");
    19         Test2 t2 = new Test2();
    20         System.out.println("new Test2");
    21         t2.ok();
    22     }
    23 }
    24 /*
    25 静态块
    26 main()
    27 构造块
    28 构造方法
    29 new Test2
    30 OK()
    31 */

      可以得出:首先JVM加载这个类(执行静态块)-》执行类的入口main方法-》构造块-》构造方法-》执行调用方法

      如果有父类呢?JVM首先会检查当前类的父类是否加载,若没有则加载其父类,然后再加载自己,通过下面的测试说明:

     1 /**
     2  * @author zhengbinMac
     3  */
     4 public class Son extends father {
     5     {
     6         System.out.println("Son-构造块");
     7     }
     8     static {
     9         System.out.println("Son-静态块");
    10     }
    11     public Son() {
    12         System.out.println("Son-构造方法");
    13     }
    14 
    15     @Override
    16     public void t1() {
    17         System.out.println("Son()");
    18     }
    19     public static void main(String[] args) {
    20         System.out.println("main()");
    21         Son t = new Son();
    22         t.t1();
    23     }
    24 }
    25 
    26 class father {
    27     {
    28         System.out.println("Father-构造块");
    29     }
    30 
    31     static {
    32         System.out.println("Father-静态块");
    33     }
    34 
    35     public father() {
    36         System.out.println("Father-构造方法");
    37     }
    38 
    39     public void t1() {
    40         System.out.println("Father()");
    41     }
    42 }
    // 输出
    /*
    Father-静态块
    Son-静态块
    main()
    Father-构造块
    Father-构造方法
    Son-构造块
    Son-构造方法
    Son()
    */

      其中静态块,用static关键字声明,JVM加载类时执行,仅执行一次。

      其中构造块,类中直接用{}声明,在每次创建对象时执行。

      注意,静态块会按照声明的顺序执行。如下面这两个例子:

  • 相关阅读:
    获取单选框的值
    HTML5本地存储详解
    设为首页和加入收藏
    用PhotoSwipe制作相册,手势可放大
    iOS 加载本地 HTML 文件 CSS 样式图片无效果
    PhotoSwipe简介
    Flexslider图片轮播、文字图片相结合滑动切换效果
    网页中插入视频的方法----腾讯、优酷为例
    webapp在Android中点击链接的时候会有淡蓝色的遮罩层
    C# 获取北京时间 (根据纪元时间(1970/1/1)转换为DateTime)
  • 原文地址:https://www.cnblogs.com/zhengbin/p/5671163.html
Copyright © 2011-2022 走看看