类初始化的开始的几种情况。

作者: 励志做一名老中医 | 来源:发表于2018-06-04 14:08 被阅读4次

根据java虚拟机规范,严格规定了四种情况必须立即对类进行‘初始化’。

1. 当程序进行new对象,读取,设置和调用类的不被final修饰的静态字段和方法。
2. 初始化一个类,他的父类还没有进行初始化,则先初始化父类。
3. 使用反射调用,如果类还没有进行初始化,需要先初始化这个类。
4. 当虚拟机启动时,用户需要启动main方法,则main所在的这个类是需要进行初始化的。

当我们去引用类的时候,不会造成类初始化的,我们成为被动引用,这里简单说一下被动引用的情况都有那些。

1. 引用类被final static 同时修饰的字段,是不会造成类初始化的,因为被final static 修饰的字段会在编译期间进入常量池。
2. 通过子类调用父类的静态字段,子类不会因此初始化,因为调用静态字段指挥初始化这个静态字段所存在的类。
3. 创建某个引用类型的类数组,是不会触发这个类初始化的,因为他会创建一个数组类型,并不是这个类类型,同时这个数组拥有的也不是这个类的方法,而是数组的方法。

相关文章

  • 类初始化的开始的几种情况。

    根据java虚拟机规范,严格规定了四种情况必须立即对类进行‘初始化’。 当我们去引用类的时候,不会造成类初始化的,...

  • Pandas系列1-DataFrame之初始化

    DataFrame有多种初始化方法,主要分为以下几种情况: 通过Object初始化 通过文件初始化 通过SQL查询...

  • java 动态字节码技术

    aop在java中有几种实现方式? java proxy基于接口的实现,构建目标类的实现类(全新的类),初始化的时...

  • 类的加载机制

    类不被初始化的情况 对于静态字段,只有直接定义这个字段的类才会变初始化,子类引用父类的静态字段不会导致子类的初始化...

  • 解读LayoutSubviews

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

  • java什么时候发生类的初始化

    会发生类初始化的情况(5点) 1.虚拟机启动时,初始化main方法所在的类。 2.调用类的静态成员(final修饰...

  • 08.leetcode题目讲解(Python):字符串转整数 (

    题目如下: 分析这道题,输入数据有如下几种情况: 第一类:输入字符串无法转换为整数 这一类包含以下几种情况: 输入...

  • this的几种情况

  • Swift初始化init中的一些坑

    自定义控件初始化中常见的几种错误(指定构造器和便利构造器)截图: 意思是:为初始化父类的init方法 意思是:必须...

  • 设计模式——工厂,策略,建造者

    Java 类初始化顺序基本分为以下几种:静态块,初始化块,静态方法,构造函数块,静态变量,成员变量对于块顺序,静态...

网友评论

    本文标题:类初始化的开始的几种情况。

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