代码块在类中的执行顺序

给你一囗甜甜゛ 提交于 2019-11-26 17:10:55

一、什么是代码块

  在Java中,使用{}括起来的代码被称为代码块。根据所处位置不同,分为局部代码块,静态代码块和构造代码块

    • 局部代码块:在方法中出现;限定变量生命周期,及早释放,提高内存利用率
    • 构造代码块 (初始化块):在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行
    • 静态代码块:在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。
    • 一般用于加载驱动
 1 package Day01;
 2 
 3 public class Test1 {
 4 
 5     public static void main(String[] args) {
 6         Zi zi = new Zi();
 7     }
 8 }
 9 
10 class Fu{
11     static {
12         System.out.println("父类静态代码块");
13     }
14     {
15         System.out.println("父类构造代码块");
16     }
17     public Fu(){
18         System.out.println("父类构造方法");
19     }
20 }
21 
22 class Zi extends Fu{
23     static {
24         System.out.println("子类静态代码块");
25     }
26     public Zi(){
27         System.out.println("子类构造方法");
28     }
29     {
30         System.out.println("子类构造代码块");
31     }
32 }

根据这个例题来看运行顺序:先进行父类初始化,再进行子类初始化,静态代码在方法区中的静态区完成,所以在其他代码执行前最先完成

由此可得,此代码运行结果为

父类静态代码块
子类静态代码块
父类构造代码块
父类构造方法
子类构造代码块
子类构造方法

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!