标签:
Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件中,中间没有任何分隔符。Class文件的结构只有两种数据类型:无符号数和表。无符号数以u1、u2、u4和u8来代表1个字节、两个字节、四个字节和八个字节的无符号数,可以用来描述数字、索引引用、数值量或者按UTF-8编码的字符串值。表是有多个无符号数或者其他表作为数据项构成的复合数据类型,习惯性以“_info”结尾。下面是Class文件的结构:
类 型 | 名 称 | 数 量 |
u4 | magic | 1 |
u2 | minor_version | 1 |
u2 | major_version | 1 |
u2 | constant_pool_count | 1 |
cp_info | constant_pool | constant_pool_count-1 |
u2 | access_flag | 1 |
u2 | this_class | 1 |
u2 | super_class | 1 |
u2 | interfaces_count | 1 |
u2 | inferfaces | interfaces_count |
u2 | fields_count | 1 |
field_info | fields | fields_count |
u2 | methods_count | 1 |
method_info | methods | methods_count |
u2 | attributes_count | 1 |
attributes_info | attributes | attributes_count |
1.魔数magic与Java版本号
每个Class前四个字节称为魔数,唯一作用是确定这个文件是否为一个能被虚拟机接受的Class文件,该魔数为0xCAFEBABE。
紧接着魔数的四个字节存储的是Class的版本号。
2.常量池
标签:
原文地址:http://www.cnblogs.com/yitong0768/p/4591755.html