当前位置:硬件测评 > 2.2常量池及相关内容

2.2常量池及相关内容

  • 发布:2023-09-26 09:52

这里唠嗑一下,任何事情都不可能一蹴而就。但是朝着那个方向走,最终还是会到终点。虽说时不我待,但这就是宿命。人的诞生可能就注定了此生需要的修行~否则就是默默无闻的混日子罢了。
在原来看书的过程中看到过常量池的相关文章,但是在点线面体中无法连接到一个整体。今日翻开书籍再次阅读的时候,发现的结果是原来如此!

ClassFile{u4					magic;u2					minor_version;u2					major_version;u2					constant_pool_count;cp_info				constent_pool[constant_pool_count-1] //索引从1开始u2					access_flags;u2					this_class;u2					super_class;u2					interface_count;u2					interface[interface_count];u2					fields_count;field_info			fields[fields_count];u2					methods_count;method_info			methods[methods_count];u2					attributes_count;attribute_info		attributes[attibutes_count];
}

U4说明占用4个字节,一个字节占8位(bit),内容无符号整数,以此内推!(一个字节最大的无符号整数为256,用十六进制需要两位!)

常量池类型tag的标识意义
CONSTANT_Uft81存储字符常量,CONSTANT_String中存储的则是这里的索引值
CONSTANT_Integer3整数,占用4个字节,存储int的数值
CONSTANT_Float4浮点数,占用4个字节,存储float的数值
CONSTANT_Long5长整型,占用8个字节,存储long的数值
CONSTANT_Double6双精度浮点数,占用8个字节,存储double的数值
CONSTANT_Class7代表类和接口的信息
CONSTANT_String8存储的字符串的索引值,指向字符常量的索引
CONSTANT_Fieldref9存储成员变量符号的引用。这些引用信息包括类名、变量、函数名,函数参数,返回值等
CONSTANT_Methodref10存储成员函数符号的引用。这些引用信息包括类名、变量、函数名,函数参数,返回值等
CONSTANT_InterfaceMethodref11存储接口函数符号的引用。这些引用信息包括类名、变量、函数名,函数参数,返回值等
CONSTANT_NameAndType12用于描述类的成员域或成员函数相关的信息
CONSTANT_MethodHandle15用于描述MethodHandle和反射。Java库中对应的类为java.lang.ivoke.MethodHandle
CONSTANT_MethodType16用于描述一个成员函数的信息,只包括函数的参数类型和返回值类型,不包括函数名和所属类的类名
CONSTANT_Dynamic17动态计量常量
CONSTANT_Dynamic18用于动态调用指令,类似于ruby,python有关功能

相关文章