java虚拟机——类文件结构
1、各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码
2、实现语言无关性的基础是虚拟机和字节码存储格式。java虚拟机不和包括java在内的任何语言绑定,只与“class文件”这种特定的二进制文件所关联。Class文件中包含了java虚拟机指令集和符号表以及若干其它辅助信息。
3、Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑排列在Class文件中,中间没有添加任何分隔符。
4、每个Class文件的头4个字节成为“魔数”。作用:确定这个文件是否为一个能被虚拟机接收的Class文件。
使用魔数而不是扩展名来识别主要是基于安全方面的考虑,因为文件扩展名可以随意地改动。
5、class文件中,版本号之后的字节是常量池入口。常量池是占用Class文件空间最大的数据项目之一。
常量池入口是常量池容量计数值(从1开始)。
常量池主要存放两大类常量:字面量和符号引用。
字面量:接近于java语言层面的常量概念。如字符串,声明为final的常量值。
符号引用:类和接口的全限定名;字段的名称和描述符;方法的名称和描述符。
常量池中每一项常量都是一个表。