Java实现语言无关的基石是JVM和字节码存储格式。
任何一个Class文件都对应唯一一个类或接口的定义信息。,但是反过来说,类或者接口不一定定义在文件中,有可能通过类加载器直接生成。
Class文件以8字节为基本单位二进制流存储,当遇到8字节以上时,会按照高位在前的方式分割成若干8字节进行存储。
Class文件的格式如下:
Class文件的头4个字节表示魔数,主要用来判断是够能被JVM所接受。紧接着4个字节表示Class文件的版本号,5,6个字节表示次版本,7,8个字节表示主版本。
常量池
常量池有两大类常量:字面量和符号引用。
字面量,例如文本字符串、声明为final的常量值。
符号引用:类和接口的全限定名、字段的名称和描述符、方法的名称和描述符。
常量池中有14中不同类型的常量类型,每一个都有自己的结构。
Class文件的访问标志