美文网首页
Java代码执行顺序

Java代码执行顺序

作者: NANGG | 来源:发表于2018-08-27 22:37 被阅读0次

AVA是一门面向对象的编程语言,这里考虑“类”里面在程序开始执行时的执行顺序。
先看一个实例:

class Person{
    static {
        System.out.println("执行Person静态代码块");
    }
    {
        System.out.println("执行Person构造代码块");
    }
    public Person(){
        System.out.println("执行Person无参构造方法");
    }
    public Person(String name){
        System.out.println("执行Person构造方法"+ name);
    }
}

class Student extends Person{
    static {
        System.out.println("执行Student静态代码块");
    }
    {
        System.out.println("执行Student构造代码块");
    }
    public Student(String name){
        super(name);
        System.out.println("执行Student构造方法" + name);
    }
    public Student(){
        super();
        System.out.println("执行Student无参构造方法");
    }
}
public class ExtendsStaticConstruct {
    public static void main(String args[]){
        Student student1 = new Student("lili");
        System.out.println("--------------------");
        Student student2 = new Student();
    }
}

执行结果:

执行Person静态代码块
执行Student静态代码块
执行Person构造代码块
执行Person构造方法lili
执行Student构造代码块
执行Student构造方法lili
--------------------
执行Person构造代码块
执行Person无参构造方法
执行Student构造代码块
执行Student无参构造方法

说明:
一般的类里面包含:
1、静态代码块(静态区、静态变量等)
2、构造代码块({ }中间的内容)
3、构造方法

其执行顺序也是1、2、3先后执行,这里需要注意的是:考虑继承特性。
子类与父类的执行顺序是:
1、先执行父类的静态代码块(父1)
2、子类的静态代码块(子1)
3、父类构造代码块(父2)
4、父类构造方法(父3)
5、子类构造代码块(子2)
6、子类构造方法(子3)

当一个类从被JVM装载开始,各种代码的执行顺序大致如下:

被JVM装载->
执行父类的相关代码->
如果有静态初始化,先执行静态初始化,且只执行一次,以后即使有该类实例化,也不会再执行->
如果有静态代码块,以与静态初始化一样的方式执行->
如果有new语句带来的实例化,先为成员变量分配空间,并绑定参数列表,隐式或显式执行super(),即父类的构造方法->
执行非静态代码块->
执行本类的构造函数->
执行其他代码。

这里的执行顺序同子类构造中有一个默认的父类构造super()无关,不是执行到隐藏的super()才开始初始化父类的,类的初始化是分层初始化,即先初始化父类,再初始化子类,初始化每个类的过程中,进行类的初始化工作,先进性成员变量的初始化,成员变量的初始化顺序是:默认初始化,即int为0这种->显示初始化,例如给int型显示初始化了值->构造方法初始化,所以是这里执行到了构造方法。

相关文章

  • java程序执行顺序

    Java 类中代码的执行顺序深入了解Java程序执行顺序 单个类: static变量—>Static代码块—> m...

  • Java代码执行顺序

    AVA是一门面向对象的编程语言,这里考虑“类”里面在程序开始执行时的执行顺序。先看一个实例: 执行结果: 说明:一...

  • Java代码执行顺序

    java中子类继承父类程序执行顺序问题 Java中,new一个类的对象,类里面的静态代码块、非静态代码、无参构造方...

  • java代码执行顺序

    执行顺序

  • java代码执行顺序

    java中首先是静态块先执行,然后非静态代码块,最后是构造函数 执行结果 父类--静态代码块子类--静态代码块父类...

  • 重排序 VS 可见性 VS 原子性

    重排序 代码实际执行顺序和代码在 Java 文件中的顺序不一致,代码指令并不是严格按照代码语句顺序执行的,这就是重...

  • 前程科技:JavaSE系列课程之Java程序结构

    Java程序结构 1、顺序结构 按照代码编写顺序,自上而下、逐行执行 2、选择结构 有条件的执行代码,所写的代码在...

  • Java的代码执行顺序

    我发表了一篇新博文:Java的代码执行顺序我的博客地址:不如怀念

  • java代码的执行顺序

    java 静态代码块 静态方法区别 静态代码块是主动执行的,在项目启动的时候就初始化, 静态方法在类加载的时候 就...

  • java代码的执行顺序

    若类还未被加载 先执行父类的静态代码块和静态变量初始化,并且静态代码块和静态变量的执行顺序只跟代码中出现的顺序有关...

网友评论

      本文标题:Java代码执行顺序

      本文链接:https://www.haomeiwen.com/subject/fvlxwftx.html