jvm(5)Class文件

一.Class文件结构

    Class文件是一组以8位字节为基础单位的二进制流,Class文件中有两种数据类型,分别是无符号数和表

    1,无符号数,以u1、u2、u4、u8分别代表1个字节、2个字节、4个字节、8个字节的无符号数

    2,表是由多个无符号数或者其它表作为数据项构成的复合数据类型,所以表都以“_info”结尾,由多个无符号数或其它表构成的复合数据类型



 1.魔数

       魔数,魔数的唯一作用是确定这个文件是否为一个能被虚拟机所接受的 Class 文件。魔数值固定为 0xCAFEBABE,不会改变。

  2. Class文件版本  

        版本 JDK1.8是52

        

     

  3.  常量池    

        常量池,constant_pool 是一种表结构,它包含 Class 文件结构及其子结构中引用的所有字符串常量、类或接口名、字段名和其它常量。

        

        


 4. 访问标志    

    访问标志,access_flags 是一种掩码标志,用于表示某个类或者接口的访问权限及基础属性


 5.类索引,父类索引,接口表

    (1)this_class:类索引,this_class 的值必须是对 constant_pool 表中项目的一个有效索引值。

                                表示这个 Class 文件所定义的类或接口。

      (2) supper_class: 父类索引,对于类来说,super_class 的值必须为 0 或者是对 constant_pool 表中项目的一个有效索引值。
   (3)interface []: 接口表,interfaces[]数组中的每个成员的值必须是一个对 constant_pool 表中项目的一个有效索引值

 6. 字段表集合   

      声明的所有字段,但不包括从父类或父接口继承的部分。

 7.方法表集合    

        只描述当前类或接口中声明的方法,不包括从父类或父接口继承的方法。

 8.属性表集合

猜你喜欢

转载自blog.csdn.net/qq_34645958/article/details/80872280