首页IT科技class字节码文件是什么(class字节码文件结构)

class字节码文件是什么(class字节码文件结构)

时间2025-05-04 12:45:31分类IT科技浏览3837
导读:class字节码文件结构 类型 名称 说明 长度 数量 u4 magic 魔数,识别Class文件格式 4个字节 1 u2...

class字节码文件结构

类型 名称 说明 长度 数量 u4 magic 魔数,识别Class文件格式 4个字节 1 u2 minor_version 副版本号(小版本) 2个字节 1 u2 major_version 主版本号(大版本) 2个字节 1 u2 constant_pool_count 常量池计数器 2个字节 1 cp_info constant_pool 常量池表 n个字节 constant_pool_count-1 u2 access_flags 访问标识 2个字节 1 u2 this_class 类索引 2个字节 1 u2 super_class 父类索引 2个字节 1 u2 interfaces_count 接口计数器 2个字节 1 u2 interfaces 接口索引集合 2个字节 interfaces_count u2 fields_count 字段计数器 2个字节 1 field_info fields 字段表 n个字节 fields_count u2 methods_count 方法计数器 2个字节 1 method_info methods 方法表 n个字节 methods_count u2 attributes_count 属性计数器 2个字节 1 attribute_info attributes 属性表 n个字节 attributes_count

Class文件版本号和平台的对应

主版本(十进制) 副版本(十进制) 编译器版本 45 3 1.1 46 0 1.2 47 0 1.3 48 0 1.4 49 0 1.5 50 0 1.6 51 0 1.7 52 0 1.8 53 0 1.9 54 0 1.10 55 0 1.11

class文件数据类型

数据类型 定义 说明 无符号数 无符号数可以用来描述数字           、索引引用                、数量值或按照utf-8编码构成的字符串值          。 其中无符号数属于基本的数据类型                。 以u1     、u2     、u4                、u8来分别代表1个字节          、2个字节     、4个字节和8个字节 表 表是由多个无符号数或其他表构成的复合数据结构      。 所有的表都以“_info          ”结尾          。 由于表没有固定长度           ,所以通常会在其前面加上个数说明               。

类型描述符

标志符 含义 B 基本数据类型byte C 基本数据类型char D 基本数据类型double F 基本数据类型float I 基本数据类型int J 基本数据类型long S 基本数据类型short Z 基本数据类型boolean V 代表void类型 L 对象类型                ,比如:Ljava/lang/Object; [ 数组类型     ,代表一维数组      。比如:double[][][] is [[[D

常量类型和结构

类型 标志(或标识) 描述 CONSTANT_utf8_info 1 UTF-8编码的字符串 CONSTANT_Integer_info 3 整型字面量 CONSTANT_Float_info 4 浮点型字面量 CONSTANT_Long_info 5 长整型字面量 CONSTANT_Double_info 6 双精度浮点型字面量 CONSTANT_Class_info 7 类或接口的符号引用 CONSTANT_String_info 8 字符串类型字面量 CONSTANT_Fieldref_info 9 字段的符号引用 CONSTANT_Methodref_info 10 类中方法的符号引用 CONSTANT_InterfaceMethodref_info 11 接口中方法的符号引用 CONSTANT_NameAndType_info 12 字段或方法的符号引用 CONSTANT_MethodHandle_info 15 表示方法句柄 CONSTANT_MethodType_info 16 标志方法类型 CONSTANT_InvokeDynamic_info 18 表示一个动态方法调用点

常量类型和结构细节

访问标志

标志名称 标志值 含义 ACC_PUBLIC 0x0001 标志为public类型 ACC_FINAL 0x0010 标志被声明为final     ,只有类可以设置 ACC_SUPER 0x0020 标志允许使用invokespecial字节码指令的新语义                ,JDK1.0.2之后编译出来的类的这个标志默认为真     。(使用增强的方法调用父类方法) ACC_INTERFACE 0x0200 标志这是一个接口 ACC_ABSTRACT 0x0400 是否为abstract类型          ,对于接口或者抽象类来说     ,次标志值为真                ,其他类型为假 ACC_SYNTHETIC 0x1000 标志此类并非由用户代码产生(即:由编译器产生的类          ,没有源码对应) ACC_ANNOTATION 0x2000 标志这是一个注解 ACC_ENUM 0x4000 标志这是一个枚举

字段表访问标志

标志名称 标志值 含义 ACC_PUBLIC 0x0001 字段是否为public ACC_PRIVATE 0x0002 字段是否为private ACC_PROTECTED 0x0004 字段是否为protected ACC_STATIC 0x0008 字段是否为static ACC_FINAL 0x0010 字段是否为final ACC_VOLATILE 0x0040 字段是否为volatile ACC_TRANSTENT 0x0080 字段是否为transient ACC_SYNCHETIC 0x1000 字段是否为由编译器自动产生 ACC_ENUM 0x4000 字段是否为enum

类索引                、父类索引          、接口索引

长度 含义 u2 this_class u2 super_class u2 interfaces_count u2 interfaces[interfaces_count]

属性的通用格式

类型 名称 数量 含义 u2 attribute_name_index 1 属性名索引 u4 attribute_length 1 属性长度 u1 info attribute_length 属性表

数据类型和默认初始值对应

类型 默认初始值 byte (byte)0 short (short)0 int 0 long 0L float 0.0f double 0.0 char \u0000 boolean false reference null

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
macpro活动监视器(MAC下打开活动监视器后UserEventAgent未响应如何修复) 小猿搜题举报高考生,是否侵犯了用户隐私?(打码如何作弊-小猿搜题举报高考作弊,还侵犯了用户隐私?)