8、Class类文件的结构

1、魔数:前4个字节(0xCAFEBABE),是来确定是否是class文件的。翻译过来就是咖啡宝贝
2、class版本:第5、6个字节是次版本号,第7、8个字节是主版本号
3、常量池入口:接下来存放的就是常量池。常量池是个表结构的。有21项常量。1.7以前共11张表,JDK1.7以后共14张表
常量池主要放2大类常量。字面量和符号引用
字面量:常量。被final修饰的静态变量
符号引用:1)类和接口的全路径名称
2)字段的名称和描述符
3)方法的名称和描述符
4、访问标志:1、这个Class是类还是接口
2、访问范围:是public还是protected
3、是否是abstract类
4、如果是类的话,是否被声明为final
5、类索引、父类索引、接口集合
类索引(唯一):该类的全路径名是唯一的
父类索引(唯一):类只能单继承,一个子类只能继承一个父类,所以这里不是集合,记录父类的全路径名
接口集合(集合、多个):一个类可以实现多个接口。所以是接口集合,存放着N个接口的全路径名
6、字段表集合:
首先是一张表。表中存放着
1)字段的作用于:public protected private
2)是实例变量还是类变量(是否被static修饰)
3)可否被序列化(transient修饰)
4)字段数据类型(基本类型,对象,数组)
5)并发可见性(volitle并发可见性)
6)字段名称
7、方法表集合
首先是一张表。
因为volatile、transient不能修饰方法,所以表中没有这俩字段
记录了与之相对的synchronized、native、stictfp和abstract关键字
8、属性表集合:
在Class文件、字段表、方法表都可以携带自己的属性表集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值