Java中(静态)变量、(静态)代码块的执行顺序

首先创建3个类:

1、Foo类,用于打印变量
public class Foo {
    public Foo(String word) {
        System.out.println(word);
    }
}
2、Parent类
复制代码
复制代码
public class Parent {
    static Foo FOO = new Foo("Parent's static parameter");
    
    Foo foo = new Foo("Parent's parameter");
    
    static {
        System.out.println("Parent's static code block");
    }
    
    {
        System.out.println("Parent's code block");
    }
    
    public Parent() {
        System.out.println("Parent.Parent()");
    }
}
复制代码
复制代码
3、Child类
复制代码
复制代码
public class Child extends Parent{
    static Foo FOO = new Foo("Child's static parameter");
    
    Foo foo = new Foo("Child's parameter");
    
    static {
        System.out.println("Child's static code block");
    }
    
    {
        System.out.println("Child's code block");
    }
    
    public Child() {
        System.out.println("Child.Child()");
    }
}
复制代码
复制代码

接下来运行实例:

public class Run {
    public static void main(String[] args) {
        new Child();
    }
}

打印结果:

复制代码
复制代码
Parent's static parameter
Parent's static code block
Child's static parameter
Child's static code block
Parent's parameter
Parent's code block
Parent.Parent()
Child's parameter
Child's code block
Child.Child()
复制代码
复制代码

总结

  Java中的静态变量和静态代码块是在类加载的时候就执行的,实例化对象时,先声明并实例化变量再执行构造函数。如果子类继承父类,则先执行父类的静态变量和静态代码块,再执行子类的静态变量和静态代码块。同样,接着在执行父类和子类非静态代码块和构造函数。

注意:(静态)变量和(静态)代码块的也是有执行顺序的,与代码书写的顺序一致。在(静态)代码块中可以使用(静态)变量,但是被使用的(静态)变量必须在(静态)代码块前面声明。

 最后给出执行步骤:

1、父类静态变量和静态代码块(先声明的先执行);

2、子类静态变量和静态代码块(先声明的先执行);

3、父类的变量和代码块(先声明的先执行);

4、父类的构造函数;

5、子类的变量和代码块(先声明的先执行);

6、子类的构造函数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值