1. 魔数和Class文件的版本
每个Class文件的头4个字节被称为魔数, 值为 0xCAFEBABE ,接着5和6个字节是次版本号,7和8是主版本号,高版本的JDK向下兼容,JDK1.1支持 45.0 ~ 46.65535 以此类推,目前的JDK1.8 支持的版本号为 45 ~ 52.65535
2. 常量池
在主次版本号后的是常量池,常量池的入口要放置一个u2类型的数据,代表常量池容量,比如0x0016 表示 22 ,常量池中有 21项常量,1~21.空出来的0是为了满足不引用任何一个常量池项目,Class文件中也只有此处是从1开始,其余地方仍然从0开始,常量池里面主要有两大类常量,字面量和符号引用,字面量如:文本字符串还有声明为final的常量值,符号引用则分为以下三类:
- 类和接口的全限定名
- 字段的名称和描述符
- 方法的方法和描述符
和C++不同,没有连接这一个步骤,是在加载Class文件的时候进行动态连接。
感觉后面就是一些看了看了也记不住的东西就.......鹅妈妈妈妈