类加载顺序及加载过程详解
下文笔者讲述类的加载顺序及加载过程的详解说明,如下所示
java创建对象的方式分为以下四种
new 反射 克隆 反序列化
class对象获取的方式分享
//没有完成初始化过程 Class clazz1 = 类名.class //没有完成初始化过程 Class clazz2 = 类名.class.getClassLoader().loadClass("全限定名"); //完成初始化过程 Class clazz3 = Class.forName("全限定名") //此时对象已存在 Class clazz4 = 对象引用.getClass();
class装载流程
1、加载 加载 class文件 2、链接[验证 准备 解析] 验证:如版本号是否正确,语法是否正确 准备:申请内存,成员变量会给默认值不会赋值我们初始化的初始值 解析:将二进制的符号引用转换为直接引用 3、初始化 执行静态代码块 为类的静态变量进行赋值
类的初始化
JVM执行类的初始化static语句 为类的静态变量赋值 初始化的详细步骤 1.如果这个类还没有被加载和链接,那就先进行加载和链接 2.如果这个类存在父类,并且父类还没有初始化,那就先初始化直接父类 3.如果类中存在初始化语句,依次执行初始化语句
class类是什么时候被初始化的呢?
创建类的实例(new xxxClass() Class.newInstance() constructor.newInstance()) 访问类中的某个静态变量或对静态变量进行赋值 调用类的静态方法 class.forName("全限定类名") 完成这类的初始化,也会完成对本类的初始化(接口除外) 该类是程序引导人口(main入口或test入口)
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。