2.2.2.2 CONSTANT_Integer_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为3 |
bytes | u4 | 按照高位在前存储的int值 |
2.2.2.3 CONSTANT_Float_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为4 |
bytes | u4 | 按照高位在前存储的float值 |
2.2.2.4 CONSTANT_Long_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为5 |
bytes | u8 | 按照高位在前存储的long值 |
2.2.2.5 CONSTANT_Double_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为6 |
bytes | u8 | 按照高位在前存储的double值 |
2.2.2.6 CONSTANT_Class_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为7 |
index | u2 | 指向全限定名常量项的索引 |
2.2.2.7 CONSTANT_String_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为8 |
index | u2 | 指向字符串字面量的索引 |
2.2.2.8 CONSTANT_Fieldref_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为9 |
index | u2 | 指向声明字段的类或者接口描述符CONSTANT_Class_info的索引项 |
index | u2 | 指向字段描述符CONSTANT_NameAndType的索引项 |
2.2.2.9 CONSTANT_Methodref_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为10 |
index | u2 | 指向声明方法的类或者接口描述符CONSTANT_Class的索引项 |
index | u2 | 指向名称及类型描述符CONSTANT_NameAndType的索引项 |
2.2.2.10 CONSTANT_InterfaceMethodref_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为11 |
index | u2 | 指向声明方法的接口描述符CONSTANT_Class的索引项 |
index | u2 | 指向名称及类型描述符CONSTANT_NameAndType的索引项 |
2.2.2.11 CONSTANT_NameAndType_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为12 |
index | u2 | 指向该字段或方法名称常量项的索引 |
index | u2 | 指向该字段或方法描述符常量项的索引 |
2.2.2.12 CONSTANT_MethodHandle_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为15 |
reference_kind | u1 | 值必须在1至9之间[1-9]它决定了方法句柄的类型。方法句柄类型的值表示方法句柄的字节码行为 |
reference_index | u2 | 值必须是对敞亮吃的有效索引 |
2.2.2.13 CONSTANT_MethodType_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为16 |
descriptor_index | u2 | 值必须是对常量池的有效索引,常量池在该索引处的项必须是CONSTANT_Utf8_info结构,表示方法的描述符 |
2.2.2.14 CONSTANT_Dynamic_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为17 |
bootstrap_method_attr_index | u2 | 值必须是对当前Class文件中引导方法表的bootstrap_methods[]数组的有效索引 |
name_and_type_index | u2 | 值必须是对当前常量池的有效索引,常量池在该索引处的项必须是CONSTANT_NameAndType_info结构,表示方法名和方法描述符 |
2.2.2.15 CONSTANT_InvkoeDynamic_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为18 |
bootstrap_method_attr_index | u2 | 值必须是对当前Class文件中引导方法表的bootstrap_methods[]数组的有效索引 |
name_and_type_index | u2 | 值必须是对当前常量池的有效索引,常量池在该索引处的项必须是CONSTANT_NameAndType_info结构,表示方法名和方法描述符 |
2.2.2.16 CONSTANT_Module_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为19 |
name_index | u2 | 值必须是对常量池的有效索引,常量池在该索引处的项必须是CONSTANT_Utf8_info结构,表示模块名称 |
2.2.2.17 CONSTANT_Package_info
项目 | 类型 | 描述 |
---|---|---|
tag | u1 | 值为19 |
name_index | u2 | 值必须是对常量池的有效索引,常量池在该索引处的项必须是CONSTANT_Utf8_info结构,表示包名称 |
3. 查看常量池表
如果我们使用文本编辑器打开某个Class文件,那么你见到的场景大概是这样的:
除了魔数CAFE BABE 其他的信息阅读起来可能会有很大的困难。好在Oracle为我们提供了一个专门用于分析Class文件字节码的工具:javap。javap的使用方式:
javap -verbose xxxx.class
简单写一个java类Test, 代码如下:
public class Test {
String test = “dafa”;
String test1 = “soft”;
String test3 = “dafasoft”;
public Test() {
}
void Test() {
this.testFun();
}
public void testFun() {
}
public void testFun1() {
}
public void testFun2() {
}
写在最后
可能有人会问我为什么愿意去花时间帮助大家实现求职梦想,因为我一直坚信时间是可以复制的。我牺牲了自己的大概十个小时写了这片文章,换来的是成千上万的求职者节约几天甚至几周时间浪费在无用的资源上。
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源
求职者节约几天甚至几周时间浪费在无用的资源上。
[外链图片转存中…(img-4A52r723-1714482500824)]
[外链图片转存中…(img-tW60v5PR-1714482500824)]
上面的这些(算法与数据结构)+(Java多线程学习手册)+(计算机网络顶级教程)等学习资源