Java程序初始化顺序

Java程序初始化顺序

首先来看一段代码

class a{
    static b b1 = new b();
    static{
        System.out.println("1");
    }
    a(){
        System.out.println("2");
    }
}
public class b extends a{
    static{
        System.out.println("3");
    }

    b(){
        System.out.println("4");
    }
    public static void main(String[] args) {
        System.out.println("====");
        b b = new b();
    }
}

输出顺序应该是什么样的呢?

2
4
1
3
====
2
4
Java程序初始化顺序.png

根据上图可知:在程序初始化时,先会初始化父类中的静态变量和静态的代码块。然后再是子类中的静态变量和静态代码块。
然后在创建对象的时候,会先调用父类的构造函数(默认调用super()函数)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天在课上复习了Java的初始化顺序,一直有点疑惑,搞不明白,所以打算写下来,记录一下。 先说一下Java...
    付振南阅读 1,632评论 2 1
  • 父类 static 块 1 执行 父类 静态成员staticSam1初始化 父类 静态成员staticSam2初始...
    YCix阅读 1,341评论 0 0
  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,687评论 0 11
  • 摘要:  在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的。在实例化一个对象...
    SunnyMore阅读 773评论 0 4
  • ·春水碧于天,画船听雨眠。 ·梦入江南烟水路,行进江南,不与离人遇。 ·人人尽说江南好,游人只合江南老。 ·江南几...
    哒玲哒玲哒阅读 607评论 0 0