java类加载过程1、加载。获得class对象,所以通过类字面常量.class获得Class对象的过程,不需要初始化。
2、链接。
-字节码验证、
-类变量static分配内存到方法区,此时在内存中为默认值,而不是真实值。staticfinal是真实值。(方法区主要用来存储运行时常量池、静态变量、类信息、JIT编译后的代码等数据。)
-解析阶段,符号引用变为直接引用。
3、初始化阶段
为static变量赋正确值。
类初始化时机:只有当对类的主动使用的时候才会导致类的初始化,类的主动使用包括以下六种:

创建类的实例,也就是new的方式
访问某个类或接口的静态变量,或者对该静态变量赋值
调用类的静态方法
反射(如 Class.forName(“com.shengsiyuan.Test”))
初始化某个类的子类,则其父类也会被初始化
Java虚拟机启动时被标明为启动类的类( JavaTest),直接使用 java.exe命令来运行某个主类
展开
评论