首页 > 代码库 > jvm1

jvm1

字节码常量池:

01开头的说明是一个utf-8编码的常量,那么后面就一定要跟两个字节也就是四位16进制的数,来表示这个常量占几个字节,然后后面再跟与这个字节数对应长度的utf-8编码的字符串。之所以一共有三项,这是由01类型,也就是utf-8编码的这个类型在总共12种数据类型中的性质决定的,其他11中类型,第一项是说明是12项中的哪一项,第二项是指向01类型的第几个常量(这个排序在u2类型的计数器中显示),第三项(如果有的话)也是这样的指向。所以说01是根本,是基础,其他的11项都只要一个标志符,再加上一个指向01的序号就可以了。

技术分享

技术分享

如上二图,第一张图:开始的两个字节是23==》35,35-1=34个常量。再往后,是07开头的,说明是类名,后面的两个字节值是2,就是指向常量池的第二个常量。再往下,第二个常量就是01开头,表明是utf-8编码的字符常量,01后面的两个字节是字符串的长度:36,所以往后的36位就是一串字符串。以后的码同理。

 

jvm1