Java类的初始化顺序是什么
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要讲解了"Java类的初始化顺序是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java类的初始化顺序是什么"吧!Java类的初始化顺序
千家信息网最后更新 2026年11月01日Java类的初始化顺序是什么
这篇文章主要讲解了"Java类的初始化顺序是什么",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Java类的初始化顺序是什么"吧!
Java类的初始化顺序
多说无益,以下是本人亲自试验的代码,一目了然:
1 package test1; 2 3 public class Test { 4 public static void main(String[] argc) { 5 new Child(); 6 System.out.println("================================"); 7 new Child(); 8 } 9 }10 11 class Child extends Parent{12 private static String staticField = getStaticField();13 static {14 System.out.println("child静态方法块初始化");15 }16 private String field = getField();17 {18 System.out.println("child普通方法块初始化");19 }20 21 public Child() {22 System.out.println("child构造函数初始化");23 }24 25 public static String getStaticField() {26 System.out.println("child静态属性初始化");27 return "staticField";28 }29 30 public static String getField() {31 System.out.println("child普通属性初始化");32 return "field";33 }34 }35 36 class Parent {37 private static String staticField = getStaticField();38 static {39 System.out.println("parent静态方法块初始化");40 }41 private String field = getField();42 {43 System.out.println("parent普通方法块初始化");44 }45 46 public Parent() {47 System.out.println("parent构造函数初始化");48 }49 50 public static String getStaticField() {51 System.out.println("parent静态属性初始化");52 return "staticField";53 }54 55 public static String getField() {56 System.out.println("parent普通属性初始化");57 return "field";58 }59 }打印结果:
1 parent静态属性初始化 2 parent静态方法块初始化 3 child静态属性初始化 4 child静态方法块初始化 5 parent普通属性初始化 6 parent普通方法块初始化 7 parent构造函数初始化 8 child普通属性初始化 9 child普通方法块初始化10 child构造函数初始化11 ================================12 parent普通属性初始化13 parent普通方法块初始化14 parent构造函数初始化15 child普通属性初始化16 child普通方法块初始化17 child构造函数初始化
经过替换静态属性和静态初始化块的声明顺序发现静态属性和静态初始化块的初始化顺序和声明顺序有关,同理,普通属性和普通初始化块的的初始化顺序和声明顺序有关。
总结:
当某一个类满足初始化的条件时(以后的博客中会有总结),先会初始化父类(从顶级父类Object依次向下初始化),然后初始化子类;
初始化该类时,最先初始化静态属性和静态初始化块(和声明顺序有关),从顶级父类Object依次向下初始化;
通过new创建对象时,先初始化普通属性和普通初始化块(和声明顺序有关),再调用构造方法,同样从顶级父类Object依次向下执行;
静态属性和静态初始化块只会初始化一次,类初始化后,再次通过new创建对象,只会重复执行第三步。
接下来引用Java编程思想的一句话:
在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。
感谢各位的阅读,以上就是"Java类的初始化顺序是什么"的内容了,经过本文的学习后,相信大家对Java类的初始化顺序是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
普通
属性
静态
顺序
方法
函数
有关
顶级
学习
内容
变量
对象
一目了然
接下来
一句话
之间
代码
先后
再次
博客
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
广州百单互联网科技有限公司
互联网的科技
北京互联网科技有限公司
为想互联网科技
互联网科技的英文
互联网女皇 腾讯科技
哈尔滨新华互联网科技
海南科技产业互联网平台
开启互联网科技时代小说
福州新华互联网科技学校 知乎
承德科技产业互联网发展
南山科技园互联网公司有哪些
贵州叶脉互联网科技有限公司所属行业
互联网科技与管理
如何创新互联网科技
深圳互联网科技的发展
梅州GM互联网络科技有限公司
互联网科技品牌
现代科技的标志之一的互联网
重庆互联网络科技
浩特互联网科技
朗涯互联网科技
金融科技和互联网金融
汉立互联网科技有限公司联系电话
辽宁互联网新科技
互联网科技大奖都有哪些公司
深圳市罗太互联网科技有限公司
福仕德教育科技互联网
互联网企业和网络科技有限公司