类加载
静态加载:
编译时加载相关的类,如果没有则报错,依赖性太强
常见于普通的new对象语句
动态加载:
运行时加载需要的类,若没有使用该类则不报错,降低了依赖性
通过反射的方法来调用对象就是动态加载,在程序不执行时,就不加载,所以降低了依赖性,只有当代码执行到该处时程序才会检查有无进行报错。
类加载时机
1.当创建对象时
2.当子类被加载时,父类也被加载
3.调用类中的静态成员时
4.通过反射
类加载流程图
加载和连接阶段是jvm来控制的
连接阶段中:验证:就是安全性验证,对字节码文件进行安全验证
准备:对静态变量进行默认初始化,并分配空间