javac编译原理 源文件----->类文件java
词法分析------>语法分析------>语义分析----字节码生成器------.class 文件spa
javap 反编译3d
之因此能处处运行就是 由于 class文件 就是 经过 javaformat 规范code
java 类加载机制:orm
类文件要运行在JVM中,装载、连接、初始化对象
装载:blog
① 就是查找和导入class 文件 将类文件转换为 二进制流 ClassLoader 类加载,不一样的类加载器,加载不一样区域的class文件内存
② 讲二进制流的静态结构,转换到 运行时数据区的某一块区域【方法区】io
同名的类 由上层去加载,这种模式叫作 双亲委派模型 (由父亲去加载,父亲加载到了 本身就不去加载了) 若是想打破这种规律,就是 重写 classLoader里面的 findClass方法 此处须要作实验 破坏双亲委派模型编译
双亲委派模型工做过程是:若是一个类加载器收到类加载的请求,它首先不会本身去尝试加载这个类,而是把这个请求委派给父类加载器完成。每一个类加载器都是如此,只有当父加载器在本身的搜索范围内找不到指定的类时(即ClassNotFoundException
),子加载器才会尝试本身去加载。
连接:
1、验证
验证数据的有效性
2、准备
为类的静态变量分配内存、初始化值 为默认值
3、解析
把类中的符号引号转化为直接引用
初始化:
类的静态变量,赋值真正的值