千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"Java程序初始化顺序是怎么样的",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Java程序初始化顺序是怎么样的"这篇文章吧。Ja
千家信息网最后更新 2026年11月02日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程序初始化顺序是怎么样的"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

静态 变量 顺序 代码 程序 子类 结果 对象 运行 内容 函数 篇文章 不同 方法 问题 学习 帮助 一致 万变不离其宗 迎刃而解 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网金融科技 互联网与科技发展 青岛互联网科技公司 狮子座互联网科技有限公司 互联网科技上市公司 联恩商钥互联网科技有限公司 哈尔滨秒房互联网科技有限公司 顶级互联网科技成果有哪些 贵州叶脉互联网科技有限公司所属行业 厦门千工互联网科技有限公司 恒生互联网科技指数跳水 互联网在线教育科技创业 互联网数据科技专业 每天都有哪些好的互联网科技 互联网科技快讯热点 2021世界互联网领先科技成果发布 容联科技互联网电商 张家口科技产业互联网平台 重庆科技产业互联网有哪些 北京瑞云互联网科技有限公司 瑰夏咖啡 互联网科技园 上海喔噻互联网科技 广州凡科互联网科技 撒么互联网科技公司 团飞科技与伯堂互联网服务平台 苏州五指互联网络科技有限 互联网科技包装股 互联网公司属于科技吗 数字互联网科技有限公司
0