结合上一篇,触发类初始化的几个情况

静态代码块会在类初始化阶段执行。

final static 类型的成员,不会初始化类。

父类的static类型的变量,只会初始化父类,不会初始化子类。

定义类的数组类型变量,不会触发初始化。

如下几种情形,如果类未初始化,对类进行初始化

1.创建类的实例。

2.访问静态变量(除了常量【被final修辞的静态变量】原因:常量是一种特殊的变量,因为编译器把他们当成值而不是域来对待。如果你的代码中用到常变量,编译器会直接把这个值插入到引用常量的位置的字节码中。但是你需要改变final域的值,每一块域的代码都需要重新编译)

3.访问类的静态方法。

4.反射,如(Class.forName(“my.xyz.Test”))

5.初始化一个类的时候,如果父类还未初始化,则先触发父类的初始化

6.虚拟机启动的时候,定义了main方法的那个类先初始化。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一:java概述:1,JDK:Java Development Kit,java的开发和运行环境,java的开发工...
    ZaneInTheSun阅读 2,687评论 0 11
  • 父类 static 块 1 执行 父类 静态成员staticSam1初始化 父类 静态成员staticSam2初始...
    YCix阅读 1,341评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,765评论 18 399
  • 1、.java源文件: 一个以”.java“为后缀的源文件:只能有一个与文件名相同的类,可以包含其他类。 2、类方...
    Hughman阅读 1,518评论 1 9
  • 等待蒸发的日子 全身的细胞都要穿越表皮层的束缚 我变成一只装满惰性气体的气球 手上还留着中午炸鸡时的油腻 这味道很...
    沉于落雁阅读 319评论 0 0