如何学好JVM征服面试官?一篇Class 类文件结构你还不会吗?
Java 跨平台的基础 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式――字节码(ByteCode)是 构成平台无关性的基石,也是语言无关性的基础。Java 虚拟机不和包括 Java 在内的任何 语言绑定,它只与“Class 文件”这种特定的二进制文件格式所关联,Class 文件中包含了 Java 虚拟机指令集和符号表以及若干其他辅助信息。 Class 类的本质 任何一个 Class 文件都对应着唯一一个类或接口的定义信息,但反过来说,Class 文件实 际上它并不一定以磁盘文件的形式存在。 Class 文件是一组以 8 位字节为基础单位的二进制流。 Class 文件格式 各个数据项目严格按照顺序紧凑地排列在 Class 文件之中,中间没有添加任何分隔符,这 使得整个 Class 文件中存储的内容几乎全部是程序运行的必要数据,没有空隙存在。 Class 文件格式采用一种类似于 C 语言结构体的伪结构来存储数据,这种伪结构中只有两 种数据类型:无符号数和表。 无符号数属于基本的数据类型,以 u1、u2、u4、u8 来分别代表 1 个字节、2 个字节、4 个字节和 8 个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照 UTF-8 编码构成字符串值。 表是由多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都习惯性地以 “_info”结尾