2.2常量池及相关内容

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

文章目录


class文件格式

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有关功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值