
52. 什么时候会发生类初始化?
当虚拟机启动时,首先会初始化main方法所在的类。 静态方法和静态变量:调用类的静态成员会触发类的初始化,包括** 反射调用:通过反射获取类及其成员并执行操作会触发类的初始化。 子类初始化:当一个类被创建时,如果其父类未被初始化,则会先初始化父类。 通过子类引用父类的静态变量:例如,访问父类的静态变量不会触发子类的初始化。 数组定义引用的类:如** 引用常量:常量在链接阶段已经静态存入类的常量池中,因此不会触发类的初始化。
发布日期:2021-05-12 23:59:17
浏览次数:12
分类:精选文章
本文共 1404 字,大约阅读时间需要 4 分钟。
什么时候会发生类的初始化?
类的初始化通常在以下场景中会发生:
- 当虚拟机启动时,首先会初始化main方法所在的类。
- 当使用**
new
关键字**创建一个类的对象时。 - 当调用类的静态成员(除了
final
常量**)和静态方法**时。 - 当通过**
java.lang.reflect
**包中的方法对类进行反射调用时。 - 当初始化一个类的子类时,子类会依次初始化其父类(如果父类未被初始化则会先初始化父类)。
类的主动引用(一定会发生类的初始化)
以下情况会导致主动引用,从而传触发类初始化:
new
操作符:创建类对象时会引发类的初始化。static
块**。类的被动引用(不会发生类的初始化)
以下情况不会引起类的初始化:
Son[] array = new Son[5];
**不会触发类的初始化。测试类何时被加载?
以下代码片段可以帮助理解类何时会被初始化:
package com.zfy.es.myes;public class T1 { static { System.out.println("main类被加载"); } public static void main(String[] args) throws ClassNotFoundException { //1. 主动引用 Son son = new Son(); // 反射调用不会导致类加载 // Class.forName("com.zfy.es.myes.Son"); //2. 被动引用:不会引起类的加载 // System.out.println(Son.b); // 数组格式不会导致类加载 // Son[] array = new Son[5]; // 常量不会触发父类与子类的初始化 // System.out.println(Son.M); } class Father { static int b = 2; static { System.out.println("父类被加载"); } } class Son extends Father { static { System.out.println("子类被加载"); } static int a = 100; static final int M = 1; }
输出结果
- 父类被加载
- main类被加载
- 子类被加载
当运行上述代码时,输出结果依次为:父类被加载 → main类被加载 → 子类被加载。
发表评论
最新留言
关注你微信了!
[***.104.42.241]2025年05月04日 13时51分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Vue 知识整理—03-指令2
2019-03-11
go--microSocket服务端 php客户端
2019-03-11
go ioutil读写文件
2019-03-11
如何修改Pspice元件库中元件的模型参数?
2019-03-11
51单片机汇编程序——查表
2019-03-11
复杂指针的定义(含复杂函数指针)
2019-03-11
结构体内存对齐——2
2019-03-11
从STM32的位带操作重谈嵌入式中寻址与对齐的理解
2019-03-11
小程序提交新数据后如何返回上一页并刷新数据?
2019-03-11
qt c++实现的ai贪吃蛇吃满屏幕,超详细!(二)ai的具体实现
2019-03-11
oracle中duplicate column name异常处理
2019-03-11
linux 查看log日志相关命令
2019-03-11
IDEA 2019 安装 mybatis-plus插件
2019-03-11
JSON、JSONObject、JavaBean三者的相互转换
2019-03-11
JS 判断空字符串
2019-03-11
div 实现光标悬停变成手型
2019-03-11
vue项目 npm ERR! missing script: dev
2019-03-11
layer.confirm 无效
2019-03-11
Java 回调机制
2019-03-11