总结
类加载:
Java类加载是将 .class 文件中的二进制数据 读入到内存中,并对数据进行 校验、解析 和 初始化 的过程。
加载:把 .class 文件找到,读取文件内容
连接:
①. 验证:根据 JVM 规范,检查 .class 文件是否符合规范
②. 准备:给类对象分配内存空间,设置初始值(基本数据类型设为为 0,引用数据类型设为 null)
③.解析:将常量池内的符号引用替换为直接引用的过程,也就是初始化常量的过程。
字符串常量有一块内存空间存字符串的实际内容,还有一个引用保存这块空间的起始地址.
类加载前,字符串常量存储在 .class 文件中(还没有内存地址),
此时这个引用记录的是字符串常量在文件中的”偏移量“(符号引用);
类加载后,字符串常量才放到内存里(有了内存地址),才会将”偏移量“替换成内存地址(直接引用)。
初始化:
真正对类对象里的内容进行加载,加载父类、执行静态代码块
注:java 程序运行后不会把所有类一次性都加载,而是需要用到哪个再加载哪个