Java300StudyNote(7)-JVM核心机制(2)-初始化时机-类的主动引用、被动引用、静态初始化块执行顺序问题
来源:互联网 发布:mysql云数据库购买 编辑:程序博客网 时间:2024/06/08 20:18
1、类的初始化
a、执行类构造器<clinit>()
方法的过程,类构造器方法是由编译器自动收集类中的所有变量的赋值动作和静态初始化块中的语句合并产生的
b、初始化一个类的时候,先初始化它的父类
c、虚拟机会保证执行类构造器方法<clinit>()
的执行是被正确加锁和同步的,也就是说这个方法是线程安全的
2、类的主动引用(一定会发生类的初始化)
- new一个类的对象
- 调用类的静态成员变量(除了final常量)和静态方法
- 使用java.lang.reflect包的方法对类进行反射调用
- 当虚拟机启动会先初始化main方法所在的类
3、类的被动引用(不会发生类的初始化)
- 当访问一个静态域(即静态属性)时,只有真正声明这个属性的类才会被初始化;如子类引用父类的静态变量,不会导致子类初始化,父类会被初始化
- 定义数组的类引用,不会触发此类的初始化
- 引用final常用不会进行此类的初始化(常量在编译阶段就存入调用类的常量池中了)
阅读全文
0 0
- Java300StudyNote(7)-JVM核心机制(2)-初始化时机-类的主动引用、被动引用、静态初始化块执行顺序问题
- 深入理解jvm--Java类的初始化及主动引用和被动引用完全解析
- 静态初始化块的执行顺序
- java类的加载 初始化时机,已经静态代码块的执行时机
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- JVM类加载过程及主动引用与被动引用
- 父类子类的静态初始化块,初始化块,构造器执行顺序
- 父类子类的静态初始化块,初始化块,构造器执行顺序
- Java类初始化顺序问题:静态初始化块,非静态初始化块以及构造函数
- [转] Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- 【转】Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- 【转】Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器)
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造方法)
- Java类的初始化顺序 (静态变量、静态初始化块、变量、初始化块、构造器
- Java 中对类的主动引用和被动引用
- Java 中对类的主动引用和被动引用
- Java中对类的主动引用和被动引用
- Java 中对类的主动引用和被动引用
- [cnblogs镜像]Unity 动画系统(Mecanim) 术语及翻译 表格
- 9.26shopee面试
- c++ static
- [cnblogs镜像]Unity 动画系统(Mecanim)的组成结构
- tomcat7-maven-plugin的使用
- Java300StudyNote(7)-JVM核心机制(2)-初始化时机-类的主动引用、被动引用、静态初始化块执行顺序问题
- POJ
- [cnblogs镜像]Unity 动画资源与模型资源的区别
- 最大最小公倍数
- java学习初探十七之IO流
- suse12 开启ssh 远程连接
- 如何解决It's likely you're attempting to run Eclipse using the JRE instead of the JDK
- Codeforces Round #436 (Div. 2)E,F详解
- 求1+2+3+...+n