static代码块、static变量、非static方法和构造器执行顺序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_33905879/article/details/82971378

static代码块、static变量、非static方法和构造器执行顺序


Java类的生命周期分为:装载、链接、初始化、使用、卸载。Java中经过static 修饰的成员有:静态常量,静态变量, 静态方法 ,还有就是静态代码块。

  1. static修饰的成员是跟着类走的,普通方法和成员变量是跟随对象走的。当类编译加载完成后还不一定存在对象,即还没有创建对象呢,这个时候其实static相关的东西已经初始化完成可以直接使用,因为static常量、static变量、static代码块都是在类“初始化”阶段的时候就分配好内存初始化成功了,而普通的变量和方法是在类的生命周期中的“使用”阶段才创建。静态代码块的代码只会在类第一次初始化的时候执行一次。一个类可以有多个静态代码块,它并不是类的成员,也没有返回值,并且不能直接调用。静态代码块不能包含this或者super,它们通常被用初始化静态变量。

  1. 静态关键字static和静态代码块、局部代码快、构造代码块简介: https://blog.csdn.net/u011809714/article/details/49495931

  1. 执行顺序:
    父类的静内容—>子类的静态内容—>父类非静态代码块—>父类构造器—>
    子类非静态代码块—>子类构造器。

总结:

  1. static相关的东西在Java类的生命周期中是在“初始化”阶段就开始初始化所以比非静态的东西先执行。
  2. 非静态的东西在Java类的生命周期中是在“使用”阶段创建了对象使用的时候才执行所以肯定在静态相关的东西之后执行。
  3. 静态代码块和静态变量的执行顺序是根据代码书写的先后顺序执行的,尽量把静态变量书写在静态代码块之前。
  4. 非静态代码块是在构造器之前先执行的,经常用来对对象做一些公共的初始化操作。static 静态变量和静态代码块的执行顺序请参考:https://blog.csdn.net/a22422931/article/details/54669508

猜你喜欢

转载自blog.csdn.net/github_33905879/article/details/82971378
今日推荐