JVM笔记(5)--类文件结构(1)

第一部分

     一 常量池的组成包括俩部分:1.常量池容量的计数值(u2类型的数据)。

                 2.常量池的俩类常量 :(1)字面量。(2)符号引用。

    注:1)常量池中的每一个常量都是一个表,常量表中分别有17种不同类型的常量。

      2)17种类型常量有一个共同的特点,表结构第一位是以u1类型的标志位,代表当前的常量属于那种常量类型。

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

    二 访问标志:是以2个字节代表访问标志,这个标志用于识别一些类或者接口层次的访问信息。

                                     2个字节  ---》产生16个标志位作用,但是当前只定义9个,还有7个未定义。

    三 类索引,父类索引和接口索引集合

      1)类索引                   u2          代表当前类的全限定名

      2)父类索引               u2          代表当前父类的全限定名

      3)接口索引集合        2*u2      当前类实现了那些接口

                   接口索引集合   第一个u2类型 表示接口计数量,表示索引量的容量。

             第二个u2实现的接口(按照关键字后的接口顺序从左到右排列在接口集合中)。

原文地址:https://www.cnblogs.com/linyu1/p/14126996.html