示例代码
public class ClassTest {
String str;
{
str = "static";
}
private int num = 1;
public String getString(String str1) throws IOException {
return str + num + str1;
}
}
二进制文件
魔数
- 行:00000000
- 列:0-3
- 字节数:4
ca fe ba be
次版本号
- 行:00000000
- 列:4-5
- 字节数:2
00 00
主版本号
16进制34为52,jdk 1.8
- 行:00000000
- 列:6-7
- 字节数:2
00 34
constant_pool_count
16进制2f为47, 常量池数量为46(从1开始计数)
- 行:00000000
- 列:8-9
- 字节数:2
00 2f
constant_pool
第1个常量
- 常量类型标志(tag):
16进制0a为10, 第一个常量类型标志为10,指向CONSTANDT_Methodref_info
- 行:00000000
- 列:a
- 字节数:1
0a
- 指向声明方法的类描述符CONSTANT_Class_info的索引值(index):
16进制0b为11, CONSTANT_Class_info的索引值为11,指向
- 行:00000000
- 列:b-c
- 字节数:2
00 0b
- 指向名称及类型描述符CONSTANT_NameAndType的索引项
16进制1f为31, CONSTANT_NameAndType的索引项为31,指向
- 行:00000000
- 列:d-e
- 字节数:2
00 1f
第2个常量
- 常量类型标志(tag):
16进制08为8, 第2个常量类型标志为8,指向CONSTANDT_String_info
- 行:00000000
- 列:f
- 字节数:1
08
- 指向字符串字面量的索引值(index):
16进制20为32, CONSTANT_Class_info的索引值为11,指向
- 行:00000010
- 列:0-1
- 字节数:2
00 20
第3个常量
- 常量类型标志(tag):
16进制09为9, 第3个常量类型标志为9,指向CONSTANDT_Fieldref_info
- 行:00000010
- 列:2
- 字节数:1
09
- 指向声明字段的类或接口描述符CONSTANT_Class_info的索引值(index):
16进制0a为10, CONSTANT_Class_info的索引值为10,指向
- 行:00000010
- 列:3-4
- 字节数:2
00 0a
- 指向字段描述符CONSTANT_NameAndType的索引项
16进制21为33, CONSTANT_NameAndType的索引项为33,指向
- 行:00000010
- 列:5-6
- 字节数:2
00 21
第4个常量
- 常量类型标志(tag):
16进制09为9, 第4个常量类型标志为9,指向CONSTANDT_Fieldref_info
- 行:00000010
- 列:7
- 字节数:1
09
- 指向声明字段的类或接口描述符CONSTANT_Class_info的索引值(index):
16进制0a为10, CONSTANT_Class_info的索引值为10,指向
- 行:00000010
- 列:8-9
- 字节数:2
00 0a
- 指向字段描述符CONSTANT_NameAndType的索引项
16进制22为34, CONSTANT_NameAndType的索引项为34,指向
- 行:00000010
- 列:a-b
- 字节数:2
00 22
第5个常量
- 常量类型标志(tag):
16进制07为7, 第5个常量类型标志为7,指向CONSTANDT_Class_info
- 行:00000010
- 列: c
- 字节数:1
07
- 指向全限定名常量的索引值(index):
16进制00 23为35, CONSTANT_Class_info的索引值为35,指向
- 行:00000010
- 列: d-e
- 字节数:2
00 23
第6个常量
- 常量类型标志(tag):
16进制0a为10, 第6个常量类型标志为10,指向CONSTANDT_Methodref_info
- 行:00000010
- 列:f
- 字节数:1
0a
- 指向声明方法的类描述符CONSTANT_Class_info的索引值(index):
16进制05为5, CONSTANT_Class_info的索引值为5,指向
- 行:00000020
- 列:0-1
- 字节数:2
00 05
- 指向名称及类型描述符CONSTANT_NameAndType的索引项
16进制1f为31, CONSTANT_NameAndType的索引项为31,指向
- 行:00000020
- 列:2-3
- 字节数:2
00 1f
第7个常量
- 常量类型标志(tag):
16进制0a为10, 第7个常量类型标志为10,指向CONSTANDT_Methodref_info
- 行:00000020
- 列:4
- 字节数:1
0a
- 指向声明方法的类描述符CONSTANT_Class_info的索引值(index):
16进制05为5, CONSTANT_Class_info的索引值为5,指向
- 行:00000020
- 列:5-6
- 字节数:2
00 05
- 指向名称及类型描述符CONSTANT_NameAndType的索引项
16进制00 24为36, CONSTANT_NameAndType的索引项为36,指向
- 行:00000020
- 列:7-8
- 字节数:2
00 24
第8个常量
- 常量类型标志(tag):
16进制0a为10, 第8个常量类型标志为10,指向CONSTANDT_Methodref_info
- 行:00000020
- 列:9
- 字节数:1
0a
- 指向声明方法的类描述符CONSTANT_Class_info的索引值(index):
16进制05为5, CONSTANT_Class_info的索引值为5,指向
- 行:00000020
- 列:a-b
- 字节数:2
00 05
- 指向名称及类型描述符CONSTANT_NameAndType的索引项
16进制00 25为37, CONSTANT_NameAndType的索引项为37,指向
- 行:00000020
- 列:c-d
- 字节数:2
00 25
第9个常量
- 常量类型标志(tag):
16进制0a为10, 第9个常量类型标志为10,指向CONSTANDT_Methodref_info
- 行:00000020
- 列:e
- 字节数:1
0a
- 指向声明方法的类描述符CONSTANT_Class_info的索引值(index):
16进制05为5, CONSTANT_Class_info的索引值为5,指向
- 行-列:00000020-f,00000030-0
- 字节数:2
00 05
- 指向名称及类型描述符CONSTANT_NameAndType的索引项
16进制00 26为38, CONSTANT_NameAndType的索引项为38,指向
- 行:00000030
- 列:1-2
- 字节数:2
00 26
第10个常量
- 常量类型标志(tag):
16进制07为7, 第10个常量类型标志为7,指向CONSTANDT_Class_info
- 行:00000030
- 列: 3
- 字节数:1
07
- 指向全限定名常量的索引值(index):
16进制00 27为39, CONSTANT_Class_info的索引值为39,指向
- 行:00000030
- 列: 4-5
- 字节数:2
00 27
第11个常量
- 常量类型标志(tag):
16进制07为7, 第11个常量类型标志为7,指向CONSTANDT_Class_info
- 行:00000030
- 列: 6
- 字节数:1
07
- 指向全限定名常量的索引值(index):
16进制00 28为40, CONSTANT_Class_info的索引值为40,指向
- 行:00000030
- 列: 7-8
- 字节数:2
00 28
第12个常量
- 常量类型标志(tag):
16进制01为1, 第12个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000030
- 列: 9
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 03为3, lenth为3
- 行:00000030
- 列: a-b
- 字节数:2
00 03
- 长度为lenth的UTF-8编码的字符串
字符串长度为3个bytes,分别为73 74 72,即字符串str
- 行:00000030
- 列: c-e
- 字节数:3(单个u1)
73 74 72
第13个常量
- 常量类型标志(tag):
16进制01为1, 第13个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000030
- 列: f
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 12为18, lenth为18
- 行:00000040
- 列: 0-1
- 字节数:2
00 12
- 长度为lenth的UTF-8编码的字符串
字符串长度为18个bytes,即字符串Ljava/lang/String;
- 行列: 00000040,2-00000050,3
- 字节数:18(单个u1)
4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b
第14个常量
- 常量类型标志(tag):
16进制01为1, 第14个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000050
- 列: 4
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 03为3, lenth为3
- 行:00000050
- 列: 5-6
- 字节数:2
00 03
- 长度为lenth的UTF-8编码的字符串
字符串长度为3个bytes,即字符串num;
- 行:00000050
- 列: 7-9
- 字节数:3(单个u1)
6e 75 6d
第15个常量
- 常量类型标志(tag):
16进制01为1, 第15个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000050
- 列: a
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 01为1, lenth为1
- 行:00000050
- 列: b-c
- 字节数:2
00 01
- 长度为lenth的UTF-8编码的字符串
字符串长度为1个bytes,即字符串I
- 行:00000050
- 列: d
- 字节数:1(单个u1)
49
第16个常量
- 常量类型标志(tag):
16进制01为1, 第16个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000050
- 列: e
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 06为6, lenth为6
- 行列:00000050,f-00000060,0
- 字节数:2
00 06
- 长度为lenth的UTF-8编码的字符串
字符串长度为6个bytes,即字符串
- 行:00000060
- 列: 1-6
- 字节数:6(单个u1)
3c 69 6e 69 74 3e
第17个常量
- 常量类型标志(tag):
16进制01为1, 第17个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000060
- 列: 7
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 03为3, lenth为3
- 行:00000060
- 列: 8-9
- 字节数:2
00 03
- 长度为lenth的UTF-8编码的字符串
字符串长度为3个bytes,即字符串()V
- 行:00000060
- 列: a-c
- 字节数:3(单个u1)
28 29 56
第18个常量
- 常量类型标志(tag):
16进制01为1, 第18个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000060
- 列: d
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 04为4, lenth为4
- 行:00000060
- 列: e-f
- 字节数:2
00 04
- 长度为lenth的UTF-8编码的字符串
字符串长度为4个bytes,即字符串Code
- 行:00000070
- 列: 0-3
- 字节数:4(单个u1)
43 6f 64 65
第19个常量
- 常量类型标志(tag):
16进制01为1, 第19个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000070
- 列: 4
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 0f为15, lenth为15
- 行:00000070
- 列: 5-6
- 字节数:2
00 0f
- 长度为lenth的UTF-8编码的字符串
字符串长度为15个bytes,即字符串LineNumberTable
- 行列:00000070,7-00000080,5
- 字节数:15(单个u1)
4c 69 6e 65 4e 75 6d 62 65 4c 69 6e 65 4e 75 6d 62 65
第20个常量
- 常量类型标志(tag):
16进制01为1, 第20个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000080
- 列: 6
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 12为18, lenth为18
- 行:00000080
- 列: 7-8
- 字节数:2
00 12
- 长度为lenth的UTF-8编码的字符串
字符串长度为18个bytes,即字符串LocalVariableTable
- 行列:00000080,9-00000090,a
- 字节数:18(单个u1)
4c 6f 63 61 6c 56 61 72 69 61 62 6c 65 54 61 62 6c 65
第21个常量
- 常量类型标志(tag):
16进制01为1, 第21个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000090
- 列: b
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 04为4, lenth为4
- 行:00000090
- 列: c-d
- 字节数:2
00 04
- 长度为lenth的UTF-8编码的字符串
字符串长度为4个bytes,即字符串this
- 行列:00000090,e-000000a0,1
- 字节数:4(单个u1)
74 68 69 73
第22个常量
- 常量类型标志(tag):
16进制01为1, 第22个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000000a0
- 列: 2
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 25为37, lenth为37
- 行:00000090
- 列: c-d
- 字节数:2
00 25
- 长度为lenth的UTF-8编码的字符串
字符串长度为37个bytes,即字符串Lcom/java/study/jvm/string/ClassTest;
- 行列:000000a0,5-000000c0,9
- 字节数:37(单个u1)
4c 63 6f 6d 2f 6a 61 76 61 2f 73 74 75 64 79 2f 6a 76 6d 2f 73 74 72 69 6e 67 2f 43 6c 61 73 73 54 65 73 74 3b
第23个常量
- 常量类型标志(tag):
16进制01为1, 第23个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000000c0
- 列: a
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 09为9, lenth为9
- 行:000000c0
- 列: b-c
- 字节数:2
00 09
- 长度为lenth的UTF-8编码的字符串
字符串长度为9个bytes,即字符串getString
- 行列:000000c0,d-000000d0,5
- 字节数:9(单个u1)
67 65 74 53 74 72 69 6e 67
第24个常量
- 常量类型标志(tag):
16进制01为1, 第24个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000000d0
- 列: 6
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 26为38, lenth为38
- 行:000000c0
- 列: b-c
- 字节数:2
00 26
- 长度为lenth的UTF-8编码的字符串
字符串长度为38个bytes,即字符串(Ljava/lang/String;)Ljava/lang/String;
- 行列:000000d0,9-000000f0,e
- 字节数:38(单个u1)
28 4c 6a 61 76 61 2f 28 4c 6a 61 76 61 2f 28 4c 6a 61 76 61 2f
第25个常量
- 常量类型标志(tag):
16进制01为1, 第25个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000000f0
- 列: f
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 04为4, lenth为4
- 行:00000100
- 列: 0-1
- 字节数:2
00 04
- 长度为lenth的UTF-8编码的字符串
字符串长度为4个bytes,即字符串str1
- 行列:00000100,2-00000100,5
- 字节数:4(单个u1)
73 74 72 31
第26个常量
- 常量类型标志(tag):
16进制01为1, 第26个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000100
- 列: 6
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 0a为10, lenth为10
- 行:00000100
- 列: 0-1
- 字节数:2
00 0a
- 长度为lenth的UTF-8编码的字符串
字符串长度为4个bytes,即字符串Exceptions
- 行列:00000100,9-00000110,2
- 字节数:10(单个u1)
45 78 63 65 70 74 69 45 78 63 65 70 74 69
第27个常量
- 常量类型标志(tag):
16进制07为1, 第27个常量类型标志为1,指向CONSTANDT_Class_info
- 行:00000110
- 列: 3
- 字节数:1
07
- 指向全限定名常量项的索引
16进制00 29为41,指向
- 行:00000110
- 列: 4-5
- 字节数:2
00 29
第28个常量
- 常量类型标志(tag):
16进制01为1, 第28个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000110
- 列: 6
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 10为16, lenth为16
- 行:00000110
- 列: 7-8
- 字节数:2
00 10
- 长度为lenth的UTF-8编码的字符串
字符串长度为16个bytes,即字符串MethodParameters
- 行列:00000110,9-00000120,8
- 字节数:16(单个u1)
4d 65 74 68 6f 64 50 4d 65 74 68 6f 64 50
第29个常量
- 常量类型标志(tag):
16进制01为1, 第29个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000120
- 列: 9
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 0a为10, lenth为10
- 行:00000120
- 列: a-b
- 字节数:2
00 0a
- 长度为lenth的UTF-8编码的字符串
字符串长度为10个bytes,即字符串SourceFile
- 行列:00000120,c-00000130,5
- 字节数:10(单个u1)
53 6f 75 72 63 65 46 69 6c 65
第30个常量
- 常量类型标志(tag):
16进制01为1, 第30个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000130
- 列: 6
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 0e为14, lenth为14
- 行:00000130
- 列: 7-8
- 字节数:2
00 0e
- 长度为lenth的UTF-8编码的字符串
字符串长度为14个bytes,即字符串ClassTest.java
- 行列:00000130,9-00000140,6
- 字节数:14(单个u1)
43 6c 61 73 73 54 65 73 74 2e 6a 61 76 61
第31个常量
- 常量类型标志(tag):
16进制0c为12, 第31个常量类型标志为12,指向CONSTANDT_NameAndType_info
- 行:00000140
- 列: 7
- 字节数:1
0c
- 指向该字段或方法名称的常量项索引
16进制00 10为16, 即
- 行:00000140
- 列: 8-9
- 字节数:2
00 10
- 指向该字段或方法描述符的常量项索引
16进制00 10为17, 即
- 行列:00000140,a-00000140,b
- 字节数:2
00 11
第32个常量
- 常量类型标志(tag):
16进制01为1, 第32个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000140
- 列: c
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 06为6, lenth为6
- 行:00000140
- 列: d-e
- 字节数:2
00 06
- 长度为lenth的UTF-8编码的字符串
字符串长度为6个bytes,即字符串static
- 行列:00000140,f-00000150,4
- 字节数:6(单个u1)
73 74 61 74 69 63
第33个常量
- 常量类型标志(tag):
16进制0c为12, 第33个常量类型标志为12,指向CONSTANDT_NameAndType_info
- 行:00000150
- 列: 5
- 字节数:1
0c
- 指向该字段或方法名称的常量项索引
16进制00 0c为12, 即
- 行:00000150
- 列: 6-7
- 字节数:2
00 0c
- 指向该字段或方法描述符的常量项索引
16进制00 0d为13, 即
- 行列:00000150,8-00000150,9
- 字节数:2
00 0d
第34个常量
- 常量类型标志(tag):
16进制0c为12, 第34个常量类型标志为12,指向CONSTANDT_NameAndType_info
- 行:00000150
- 列: a
- 字节数:1
0c
- 指向该字段或方法名称的常量项索引
16进制00 0e为14, 即
- 行:00000150
- 列: b-c
- 字节数:2
00 0e
- 指向该字段或方法描述符的常量项索引
16进制00 0f为15, 即
- 行列:00000150,d-00000150,e
- 字节数:2
00 0f
第35个常量
- 常量类型标志(tag):
16进制01为1, 第35个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000150
- 列: f
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 17为23, lenth为23
- 行:00000160
- 列: 0-1
- 字节数:2
00 17
- 长度为lenth的UTF-8编码的字符串
字符串长度为23个bytes,即字符串java/lang/StringBuilder
- 行列:00000160,2-00000170,8
- 字节数:23(单个u1)
6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 42 75 69 6c 64 65 72
第36个常量
- 常量类型标志(tag):
16进制0c为12, 第36个常量类型标志为12,指向CONSTANDT_NameAndType_info
- 行:00000170
- 列: 9
- 字节数:1
0c
- 指向该字段或方法名称的常量项索引
16进制00 2a为42, 即
- 行:00000170
- 列: a-b
- 字节数:2
00 2a
- 指向该字段或方法描述符的常量项索引
16进制00 2b为43, 即
- 行列:00000170,c-00000170,d
- 字节数:2
00 2b
第37个常量
- 常量类型标志(tag):
16进制0c为12, 第37个常量类型标志为12,指向CONSTANDT_NameAndType_info
- 行:00000170
- 列: e
- 字节数:1
0c
- 指向该字段或方法名称的常量项索引
16进制00 2a为42, 即
- 行列:00000170,f-00000180,0
- 字节数:2
00 2a
- 指向该字段或方法描述符的常量项索引
16进制00 2c为44, 即
- 行列:00000180,1-00000180,2
- 字节数:2
00 2c
第38个常量
- 常量类型标志(tag):
16进制0c为12, 第38个常量类型标志为12,指向CONSTANDT_NameAndType_info
- 行:00000180
- 列: 3
- 字节数:1
0c
- 指向该字段或方法名称的常量项索引
16进制00 2d为45, 即
- 行列:00000180,4-00000180,5
- 字节数:2
00 2d
- 指向该字段或方法描述符的常量项索引
16进制00 2e为46, 即
- 行列:00000180,6-00000180,7
- 字节数:2
00 2e
第39个常量
- 常量类型标志(tag):
16进制01为1, 第39个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000180
- 列: 8
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 23为35, lenth为35
- 行:00000180
- 列: 9-a
- 字节数:2
00 23
- 长度为lenth的UTF-8编码的字符串
字符串长度为35个bytes,即字符串com/java/study/jvm/string/ClassTest
- 行列:00000180,b-000001a0,d
- 字节数:35(单个u1)
63 6f 6d 2f 6a 61 76 61 2f 73 74 75 64 79 2f 6a 76 6d 2f 73 74 72 69 6e 67 2f 43 6c 61 73 73 54 65 73 74
第40个常量
- 常量类型标志(tag):
16进制01为1, 第40个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000001a0
- 列: e
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 10为16, lenth为16
- 行列:000001a0,f-000001b0,0
- 字节数:2
00 10
- 长度为lenth的UTF-8编码的字符串
字符串长度为16个bytes,即字符串java/lang/Object
- 行列:000001b0,1-000001c0,0
- 字节数:16(单个u1)
6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74
第41个常量
- 常量类型标志(tag):
16进制01为1, 第41个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000001c0
- 列: 1
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 10为19, lenth为19
- 行列:000001c0,2-000001c0,3
- 字节数:2
00 13
- 长度为lenth的UTF-8编码的字符串
字符串长度为19个bytes,即字符串java/io/IOException
- 行列:000001c0,4-000001d0,6
- 字节数:19(单个u1)
6a 61 76 61 2f 69 6f 2f 49 4f 45 78 63 65 70 74 69 6f 6e
第42个常量
- 常量类型标志(tag):
16进制01为1, 第42个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000001d0
- 列: 7
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 06为6, lenth为6
- 行列:000001d0,8-000001d0,9
- 字节数:2
00 06
- 长度为lenth的UTF-8编码的字符串
字符串长度为6个bytes,即字符串append
- 行列:000001d0,a-000001d0,f
- 字节数:6(单个u1)
61 70 70 65 6e 64
第43个常量
- 常量类型标志(tag):
16进制01为1, 第43个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:000001e0
- 列: 0
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 2d为45, lenth为45
- 行列:000001e0,1-000001e0,2
- 字节数:2
00 2d
- 长度为lenth的UTF-8编码的字符串
字符串长度为45个bytes,即字符串(Ljava/lang/String;)Ljava/lang/StringBuilder;
- 行列:000001e0,3-00000200,f
- 字节数:45(单个u1)
28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 42 75 69 6c 64 65 72 3b
第44个常量
- 常量类型标志(tag):
16进制01为1, 第44个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000210
- 列: 0
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 1c为28, lenth为28
- 行列:00000210,1-000001e0,2
- 字节数:2
00 1c
- 长度为lenth的UTF-8编码的字符串
字符串长度为28个bytes,即字符串(I)Ljava/lang/StringBuilder;
- 行列:00000210,3-00000220,e
- 字节数:28(单个u1)
28 49 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 42 75 69 6c 64 65 72 3b
第45个常量
- 常量类型标志(tag):
16进制01为1, 第45个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000220
- 列: f
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 08为8, lenth为8
- 行列:00000230,0-00000230,1
- 字节数:2
00 08
- 长度为lenth的UTF-8编码的字符串
字符串长度为8个bytes,即字符串toString
- 行列:00000230,2-00000230,9
- 字节数:8(单个u1)
74 6f 53 74 72 69 6e 67
第46个常量
- 常量类型标志(tag):
16进制01为1, 第46个常量类型标志为1,指向CONSTANDT_Utf8_info
- 行:00000230
- 列: a
- 字节数:1
01
- UTF-8编码的字符串所占字节数
16进制00 14为20, lenth为20
- 行列:00000230,b-00000230,c
- 字节数:2
00 14
- 长度为lenth的UTF-8编码的字符串
字符串长度为20个bytes,即字符串()Ljava/lang/String;
- 行列:00000230,d-00000250,0
- 字节数:8(单个u1)
28 29 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b
此时常量池正式结束,也可用jclasslib验证结果:
access_flags
0x0001 | 0x0020 = 0x0021,即访问标志有ACC_PUBLIC、ACC_SUPER
- 行:00000250
- 列:1-2
- 字节数:2
00 21
this_class
- 行:00000250
- 列:3-4
- 字节数:2
00 0a
super_class
即先指向第11个常量,第11指向40,即java/lang/Object
- 行:00000250
- 列:5-6
- 字节数:2
00 0b
interface_count
即0个接口
- 行:00000250
- 列:7-8
- 字节数:2
00 00
fields_count
即2个fields
- 行:00000250
- 列:9-a
- 字节数:2
00 02
fields
第一个fields
access_flags
没有任何修饰
- 行:00000250
- 列:b-c
- 字节数:2
00 00
name_index
指向第12常量,即字段名字为str
- 行:00000250
- 列:d-e
- 字节数:2
00 0c
descriptor_index
指向第13常量,即字段类型描述为Ljava/lang/String;
- 行列:00000250,f-00000260,0
- 字节数:2
00 0d
attributes_count
第一个字段属性为0
- 行列:00000260,1-00000260,2
- 字节数:2
00 00
第二个fields
access_flags
private修饰
- 行:00000260
- 列:3-4
- 字节数:2
00 02
name_index
指向第14常量,即字段名字为num
- 行:00000260
- 列:5-6
- 字节数:2
00 0e
descriptor_index
指向第15常量,即字段类型描述为I
- 行列:00000260,7-00000260,8
- 字节数:2
00 0f
attributes_count
第二个字段属性为0
- 行列:00000260,9-00000260,a
- 字节数:2
00 00
methods_count
有两个方法
- 行列:00000260,b-00000260,c
- 字节数:2
00 02
methods
第一个方法
access_flags
即public修饰
- 行列:00000260,d-00000260,e
- 字节数:2
00 01
name_index
指向常量表中第16项,即方法名为
- 行列:00000260,f-00000270,0
- 字节数:2
00 10
descriptor_index
指向常量表中第17项,即方法描述为()V
- 行列:00000270,1-00000270,2
- 字节数:2
00 11
attributes_count
此方法有一个属性
- 行列:00000270,3-00000270,4
- 字节数:2
00 01
attribute
attribute_name_index:
指向常量表中第18项,即此属性为coce属性
- 行列:00000270,5-00000270,6
- 字节数:2
00 12
attribute_length:
length为66
- 行列:00000270,7-00000270,a
- 字节数:4
00 00 00 42
info(code的):
- 行列:00000270,b-000002b0,c
- 字节数:66
第二个方法
access_flags
即public修饰
- 行列:000002b0,d-000002b0,e
- 字节数:2
00 01
name_index
指向常量表中第23项,即方法名为getString
- 行列:000002b0,f-000002c0,0
- 字节数:2
00 17
descriptor_index
指向常量表中第24项,即方法描述为(Ljava/lang/String;)Ljava/lang/String;
- 行列:000002c0,1-000002c0,2
- 字节数:2
00 18
attributes_count
此方法有3个属性
- 行列:000002c0,3-000002c0,4
- 字节数:2
00 03
attribute
第一个:
attribute_name_index:
指向常量表中第18项,即此属性为coce属性
- 行列:000002c0,5-000002c0,6
- 字节数:2
00 12
attribute_length:
length为81
- 行列:000002c0,7-000002c0,a
- 字节数:4
00 00 00 51
info(code的):
- 行列:000002c0,b-00000310,b
- 字节数:81
第二个:
attribute_name_index:
指向常量表中第18项,即此属性为Exceptions属性
- 行列:00000310,c-00000310,d
- 字节数:2
00 1a
attribute_length:
length为4
- 行列:00000310,e-00000320,1
- 字节数:4
00 00 00 04
number_of_exceptions:
- 行列:00000320,2-00000320,3
- 字节数:2
00 01
exception_index_table:
指向常量表中第27项,即为java/io/IOException
- 行列:00000320,4-00000320,5
- 字节数:2
00 1b
第三个:
attribute_name_index:
指向常量表中第29项,即此属性为SourceFile属性
- 行列:00000320,6-00000320,7
- 字节数:2
00 1c
attribute_length:
length为5
- 行列:00000320,8-00000320,b
- 字节数:4
00 00 00 05
attributes_count
具有一个attribute
- 行列:00000330,1-00000330,2
- 字节数:2
00 01
attribute_name_index:
指向常量表中第29项,即此属性为SourceFile属性
- 行列:00000330,3-00000330,4
- 字节数:2
00 1d
attribute_length:
length为2
- 行列:00000330,5-00000330,8
- 字节数:4
00 00 00 02
sourcefile_index
指向常量表中第30项,即此为ClassTest.java的sourcefile
- 行列:00000320,9-00000320,a
- 字节数:2
00 1e