美文网首页
结合上一篇,触发类初始化的几个情况

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

作者: 尔乐 | 来源:发表于2017-03-16 21:22 被阅读11次

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

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

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

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

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

1.创建类的实例。

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

3.访问类的静态方法。

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

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

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

相关文章

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

    静态代码块会在类初始化阶段执行。 final static 类型的成员,不会初始化类。 父类的static类型的变...

  • java类加载的笔记

    1.子类来引用父类中定义的静态字段,只会触发父类的初始化而不会触发子类初始化; 如 2.通过数组定义来引用类,不会...

  • 类初始化触发

    1)创建某个类的新实例(new,不明确的创建,反射,克隆或反序列化); 2)调用类的静态方法(即执行字节码invo...

  • react第6天

    记住组件的数据useState 初始化数据 在事件中触发 触发渲染render 有两种情况:组件初始化render...

  • 解读LayoutSubviews

    1.触发LayoutSubviews的几种情况 (1)init初始化的时候不会触发LayoutSubviews,v...

  • java加载顺序(父类,子类,构造代码块,构造方法,静态代码块,

    先上结论,后面有代码示例 总结: 1、当初始化一个类的时候,如果父类没有初始化,则会触发父类的初始化,并且只会初始...

  • JVM加载类的时机

    类的生命周期 加载,连接(验证,准备,解析),初始化,使用,卸载 对类的主动引用(5种),会触发类的初始化 Jav...

  • java类初始化

    会出发初始化的情况: 1,实例化的时候肯定是要触发的new 和Class.forName() 2,类的静态方法被调...

  • Python魔法方法-__init__

    __init__ 初始化方法,通过类创建对象时,自动触发执行

  • layoutSubviews、layoutIfNeeded、se

    一、layoutSubviews在以下情况下会被调用/被触发 1、init初始化不会触发layoutSubview...

网友评论

      本文标题:结合上一篇,触发类初始化的几个情况

      本文链接:https://www.haomeiwen.com/subject/pxhsnttx.html