java常量池详解

在这里插入图片描述

在这里插入图片描述

0A=10->tag=10->CONSTANT Methodref(方法常量引用)
在这里插入图片描述
占u1+u2+u2=5字节,两个index均为索引值,
第一个index=00 04=4,指向常量#4,查看反编译文件
在这里插入图片描述
第二个index=00 11=17,指向常量#17,查看反编译文件
构造方法,()V无参void返回值
在这里插入图片描述
综合常量引用CONSTANT Methodref说明执行了 java/lang/Object的无参构造方法。
2.
在这里插入图片描述

09=9->tag=9->CONSTANT Fieldreff(字段常量引用)
在这里插入图片描述
占u1+u2+u2=5字节,两个index均为索引值,
第一个index=00 03=3,指向常量#3,查看反编译文件
声明了该字段所属的类的类名
在这里插入图片描述
第一个index=00 12=18,指向常量#18,查看反编译文件
声明了该字段的名称和类型,分别为name和String
在这里插入图片描述
3.
在这里插入图片描述

07=07->tag=07->CONSTANT _Class_info(方法信息常量引用)
在这里插入图片描述

占u1+u2=3字节。
index=00 13=19,指向常量#19,查看反编译文件
在这里插入图片描述
4.
在这里插入图片描述
07=07->tag=07->CONSTANT _Class_info(方法信息常量引用)
在这里插入图片描述

占u1+u2=3字节。
index=00 14=20,指向常量#20,查看反编译文件
在这里插入图片描述
5.

在这里插入图片描述

01=01->tag=01->CONSTANT _utf8_info
在这里插入图片描述
04=length,往后数4个字节
在这里插入图片描述

6E 61 6D 65
在这里插入图片描述
6.
在这里插入图片描述
在这里插入图片描述

4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B

在这里插入图片描述
说明5中name字段是String类型
7.
在这里插入图片描述
在这里插入图片描述
3C 69 6E 69 74 3E
在这里插入图片描述
8.
在这里插入图片描述
在这里插入图片描述
28 29 56
在这里插入图片描述
9.
在这里插入图片描述
在这里插入图片描述
43 6F 64 65
在这里插入图片描述
7~9:
在这里插入图片描述
10.
在这里插入图片描述
在这里插入图片描述
4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65
在这里插入图片描述
行数表:代码行和指令之间的映射关系,这就是为什么java代码运行出错会出现打印出哪一行出错。
在这里插入图片描述
11.
在这里插入图片描述
在这里插入图片描述
67 65 74 4E 61 6D 65

在这里插入图片描述
getName方法的方法名
12.
在这里插入图片描述
在这里插入图片描述
28 29 4C 6A 61 76 61 2F 6C 6E 67 2F 53 74 72 69 6E 67 3B
在这里插入图片描述
getName方法无参,返回值为string类型
13.
在这里插入图片描述
在这里插入图片描述
73 65 74
在这里插入图片描述
set方法的名称
14.
在这里插入图片描述
在这里插入图片描述

28 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56
在这里插入图片描述
set方法参数string类型,返回值为空
15.
在这里插入图片描述
在这里插入图片描述
53 6F 75 72 63 65 46 69 6C 65
在这里插入图片描述
16.
在这里插入图片描述
在这里插入图片描述
41 64 6D 69 6E 2E 6A 61 76 61
在这里插入图片描述
指定源文件为Admin.java
在这里插入图片描述
17.
在这里插入图片描述
在这里插入图片描述
00 07=7->#7
在这里插入图片描述
00 08=8->#8
在这里插入图片描述
18.
在这里插入图片描述
00 08=5->#5
在这里插入图片描述
00 06=6->#6
在这里插入图片描述
19.
在这里插入图片描述
在这里插入图片描述
63 6F 6D 2F 73 74 6F 72 65 2F 70 6F 6A 6F 2F 41 64 6D 69 6E
在这里插入图片描述
name所属的包
20.
在这里插入图片描述
在这里插入图片描述
6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74
在这里插入图片描述
21.
在这里插入图片描述
this没有传入参数也能用的原因。

完美结束
22.总结
在这里插入图片描述
.class二进制文件指导反编译的.class文件常量池将类信息串联起来,
在这里插入图片描述
以此描述:
在这里插入图片描述
在这里插入图片描述
2.
2.1.access_flag 类的权限描述符(2个字节)
0x0001(ACC_PUBLIC)和0x0020(ACC_SUPER)位运算得到00 21,
因此类的权限描述符 为 ACC_PUBLIC和ACC_SUPER
在这里插入图片描述
在这里插入图片描述
2.2.this class name(2个字节,索引值)
在这里插入图片描述
0030=3->#3,this class name= com.store.pojo.Admin
在这里插入图片描述
2.3.super class name(2个字节,索引值)
在这里插入图片描述
00 04=4->#4,.super class name=java/lang/Object
在这里插入图片描述
2.3.实现接口的个数(2个字节)
在这里插入图片描述
00 00=0个接口,推测出一个类最大实现接口个数FFFF=65535个
2.4.字段的个数(2个字节)
在这里插入图片描述
00 01=1个
在这里插入图片描述
2.5.filed_info(1)(有几个字段括弧就为几)
通过组成.filed_info(1)的字段访问修饰符、字段名称的索引和descciptor_index来唯一确定一个字段。
在这里插入图片描述

在这里插入图片描述
u2字段访问修饰符:00 02 =2=ACC_PRIVATE
在这里插入图片描述

u2字段名称的索引:00 05=5->#5
在这里插入图片描述
u2 descciptor_index(字段描述索引)
在这里插入图片描述
00 06=6->#6
在这里插入图片描述
在这里插入图片描述

u2 attribute_info表示有没有加transfer等等
00 00表示没有加
2.6.methods_count
在这里插入图片描述

u2 00 03=3个方法
在这里插入图片描述

2.7.Method_info字段结构

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fire king

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值