Java虚拟机精讲【2.1】
3.3.2 CONSTANT_Integer_info常量项
在常量池列表中, CONSTANT_Integer_info 常量项用于存储一个 int 类型的常量信息。在此大家需要注意, CONSTANT_Integer_info 常量项中仅仅只会存储 int 类型的值,并不会存储任何的符号引用信息。 CONSTANT_Integer_info 常量项的表结构信息,如下所示:
代码 3-7 CONSTANT_Integer_info 表结构 CONSTANT_Integer_info { u1 tag; u4 bytes; }上 述 代 码 示 例 中 , CONSTANT_Integer_info 常 量 项 中 tag 项 的 值 为 CONSTANT_ Integer_info(3)。由于 int 类型的二进制位数为 32 位,因此 bytes 项将会占用 4 个字节,并按照 big-endian 顺序去存储一个 int 类型的值。
相 信 细 心 的 读 者 已 经 发 现 了 , CONSTANT_Float_info 常 量 项 的 表 结 构 与CONSTANT_Integer_info 常 量 项 的 表 结 构 其 实 是 一 模 一 样 的 。 上 述 代 码 示 例 中 , CONSTANT_Float_info 常量项中 tag 项的值为 CONSTANT_Integer_info(4)。由于 float 类型的二进制位数与 int 类型的二进制位数同样是 32 位,因此后续的 bytes 项同样也将占用 4 个字节,并按照 big-endian 顺序存储一个 float 类型的值。
3.3.4 CONSTANT_Long_info常量项
在常量池列表中, CONSTANT_Long_info 常量项用于存储一个 long 类型的常量信息。当然 CONSTANT_Long_info 常量项仅仅只会用于存储 long 类型的值,并不存储任何的符号引用信息。 CONSTANT_Long_info 常量项的表结构信息,如下所示:
代码 3-9 CONSTANT_Long_info 表结构 CONSTANT_Long_info { u1 tag; u8 bytes; }上 述 代 码 示 例 中 , CONSTANT_Long_info 常 量 项 中 tag 项 的 值 为 CONSTANT_ Integer_info(5)。由于 long 类型的二进制位数为 64 位,因此 bytes 项将会占用 8 个字节,并按照 big-endian 顺序存储一个 long 类型的值。
3.3.5 CONSTANT_Double_info常量项
在常量池列表中, CONSTANT_Double_info 常量项用于存储一个 double 类型的常量信息。和之前的 CONSTANT_Integer_info、 CONSTANT_Float_info 以及 CONSTANT_Long_info常量项一样, CONSTANT_Double_info 常
