ZL jvm 字节码含义

1以16进制打开一个class 文件

1 文件前4个字节是魔数

2 魔数后的4个字节是版本号,对应jdk的版本号 jvm向下兼容class文件

3常量池 (constant pool) 紧接着主版本号后面的就是常量池(长度不确定)一个java类定义的很多信息都是由常量池来维护的

可以将常量池看作是class文件资源仓库比如java类中定义的方法黑变量信息都是存在常量池中,常量池中保存两类常量  1字面量,比如文本,字符串,java中声明的final的常量值,2 符号引用,比如字段的名称和描述符,类或者接口的的全局限定名,方法的名称和描述符。

5常量池的总体结构:java类所对应的常量池主要由常量池数量和常量池数组两部分共同构成,常量池数量紧跟主版本号后面,占两个字节,常量次数组紧跟常量池数量后面,常量池数组跟一般的数组不同的是,常量池数组不同的类型结构都是不同的,所以长度当然也不同,但是每一种元素的第一个数据都是 u1 类型,该字节是一个标志位,占据1个字节,jvm在解析的时候,会根据这个u1类型来获取元素的具体类型。值得注意的是     常量池数组元素的个数=常量池数量 -1 。目的是满足某些常量池索引值的数据在特定情况下需要在特定情况下表达(不引用任何一个常量池) 的含义 根本在于 索引为 0也是一个常量(保留常量) 只不过不在常量表中,这个常量值为null,所以常量池的索引从1而不是0开始。

6对于数组来说,每一个维度用 [ 来表示,如 int[] 被记录为[I String [][]被记录为[[Ljava 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值