千家信息网

Java程序初始化顺序是怎么样的

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要为大家展示了"Java程序初始化顺序是怎么样的",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java程序初始化顺序是怎么样的"这篇文章吧。Ja
千家信息网最后更新 2025年01月18日Java程序初始化顺序是怎么样的

这篇文章主要为大家展示了"Java程序初始化顺序是怎么样的",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java程序初始化顺序是怎么样的"这篇文章吧。

Java程序的初始化一般遵循三个原则(优先级依次递减):

  • 1,静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化很多次。

  • 2,父类优先于子类进行初始化。

  • 3,按照成员变量的定义顺序进行初始化。即使变量定义散布于方法定义之中,它们依然在任何方法被调用之前先初始化。

Java程序初始化工作可以在许多不同的代码块中完成(例如静态代码块,构造函数等),它们的执行顺序如下:

  1. 父类静态变量

  2. 父类静态代码块

  3. 子类静态变量

  4. 子类静态代码块

  5. 父类非静态变量

  6. 父类非静态代码块

  7. 父类构造函数

  8. 子类非静态变量

  9. 子类非静态代码块

  10. 子类构造函数。

下面给出一个不同模块初始化时执行顺序的一个例子:

class Base{           static {                System.out.println("Base static block");                     }           public Base(){           System.out.println("Base constructor");           } public class Derived extends Base{           static{          System.out.println("Drevied static block");                     }            {          System.out.println("Drevied  block");           } public  Derived(){          System.out.println("Drevied  constructor");          }public static void main(String args[]){                new Derived();          }          }

先自己利用上面给出的执行顺序进行判断:

程序的运行结果为:

Base static block

Derived static block

Base block

Base constructor

Derived block

Derived constructor

怎么样,运行结果是否与你的结果一致呢?

最后,我们再来看一道面试真题:

下列代码运行结果是什么?

  class B extends Object{          static{          System.out.println("Load B1");                     }         public  B(){          System.out.println("Create B");          }           static{          System.out.println("Load B2");           }           }class A extends B{          static{          System.out.println("Load A");                     }         public  A(){          System.out.println("Create A");          }          }          public class Testclass{          public static void main(String[ ] args){                        new A();          }          }

运行结果是:

Load B1 LoadB2 Load A Create B Create A

在面试中出现的执行顺序的问题,无非也就是把上面的代码再换几个形式,但,万变不离其宗,只要掌握它的执行顺序的规律,所有问题就都可以迎刃而解了

以上是"Java程序初始化顺序是怎么样的"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0