6. 类文件结构

各种不同平台的虚拟机与所有平台都统一使用的程序存储格式--字节码,是构成平台·无关性的基石。

  Class文件是一组以8位字节为单位的二进制流。

  首先,class文件的前四个字节是魔数,唯一作用就是确定这个文件是否为一个能被虚拟机接受的class文件。之后是版本号,分别是两个字节的主版本号,两个字节的次版本号。

  紧接着,版本号的是常量池的入口,(存放:字面量,符号引用【类和接口的全限定名,字段名称和描述符,方法名称和描述符】))

补充:Java程序中,超过64KB英文字符的变量或者方法名,无法编译的原因是:Class文件中方法,字段都需要引用CONSTANT Utf8 info 型常量来描述名称,所以CONSTANT Utf8 info型常量的最大长度就是限制其的因素,而其的最大长度就是u2类型所能表示的最大值,65535,所以才有这个限制。

  而在常量池结束之后,紧接着的两个字节,是访问标志 ,识别类或者接口的访问信息。

在之后,分别是:类索引(类全限定名),父类索引(父类全限定名),索引集合(实现了哪些接口)

之后--字段表集合,描述接口或者类中声明的变量,不包括方法内部声明的局部变量。

     ----方法表集合

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值