Java中代码的执行顺序(Java基础)

在 Java 里,不同类型代码有着特定的执行顺序,理解这些顺序对掌握程序运行逻辑十分关键。下面将详细阐述 Java 中不同类型代码(静态代码块、实例代码块、构造方法、静态变量、实例变量、静态方法、实例方法等)的执行顺序。

单类中的代码执行顺序

当只有一个类时,代码执行顺序通常为:静态变量初始化、静态代码块、实例变量初始化、实例代码块、构造方法。

class SingleClassExample {
    // 静态变量
    static int staticVariable = initStaticVariable();

    // 实例变量
    int instanceVariable = initInstanceVariable();

    // 静态代码块
    static {
        System.out.println("静态代码块执行");
    }

    // 实例代码块
    {
        System.out.println("实例代码块执行");
    }

    // 构造方法
    public SingleClassExample() {
        System.out.println("构造方法执行");
    }

    // 初始化静态变量的方法
    static int initStaticVariable() {
        System.out.println("静态变量初始化");
        return 1;
    }

    // 初始化实例变量的方法
    int initInstanceVariable() {
        System.out.println("实例变量初始化");
        return 1;
    }

    public static void main(String[] args) {
        new SingleClassExample();
    }
}

执行结果
在这里插入图片描述

继承关系下的代码执行顺序

当存在继承关系时,代码执行顺序会有所不同,整体顺序为:父类静态变量初始化、父类静态代码块、子类静态变量初始化、子类静态代码块、父类实例变量初始化、父类实例代码块、父类构造方法、子类实例变量初始化、子类实例代码块、子类构造方法。

class ParentClass {
    // 父类静态变量
    static int parentStaticVariable = initParentStaticVariable();

    // 父类实例变量
    int parentInstanceVariable = initParentInstanceVariable();

    // 父类静态代码块
    static {
        System.out.println("父类静态代码块执行");
    }

    // 父类实例代码块
    {
        System.out.println("父类实例代码块执行");
    }

    // 父类构造方法
    public ParentClass() {
        System.out.println("父类构造方法执行");
    }

    // 初始化父类静态变量的方法
    static int initParentStaticVariable() {
        System.out.println("父类静态变量初始化");
        return 1;
    }

    // 初始化父类实例变量的方法
    int initParentInstanceVariable() {
        System.out.println("父类实例变量初始化");
        return 1;
    }
}

class ChildClass extends ParentClass {
    // 子类静态变量
    static int childStaticVariable = initChildStaticVariable();

    // 子类实例变量
    int childInstanceVariable = initChildInstanceVariable();

    // 子类静态代码块
    static {
        System.out.println("子类静态代码块执行");
    }

    // 子类实例代码块
    {
        System.out.println("子类实例代码块执行");
    }

    // 子类构造方法
    public ChildClass() {
        System.out.println("子类构造方法执行");
    }

    // 初始化子类静态变量的方法
    static int initChildStaticVariable() {
        System.out.println("子类静态变量初始化");
        return 1;
    }

    // 初始化子类实例变量的方法
    int initChildInstanceVariable() {
        System.out.println("子类实例变量初始化");
        return 1;
    }

    public static void main(String[] args) {
        new ChildClass();
    }
}

运行结果
在这里插入图片描述

总结

Java 中代码的执行顺序如下:
类加载阶段:静态变量和静态代码块。
对象创建阶段:实例变量、实例代码块、构造方法。
继承关系:先父类后子类。
方法调用:按调用栈顺序执行。

理解代码的执行顺序有助于编写正确、高效的 Java 程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值