
class文件
helianus
这个作者很懒,什么都没留下…
展开
-
笔记-Java基础Class文件之魔数和版本号
魔数与Class文件的版本 魔数:每个Class文件的头四个字节称为魔数,它的唯一作用就是确定这个文件是否为一个能被虚拟机接受的Class文件,很多存储文件都有这个魔数,不以扩展名作为标识的原因是因为扩展名可以随意更改。 魔数值可以被文件格式的制定者自由选择,只要这个魔术值没有被广泛的应用同时又不会引起混淆即可。而Class文件的魔数为CAFEBABE。 版本:紧接着魔数的四个字节存储的是C...原创 2019-04-16 11:13:45 · 227 阅读 · 0 评论 -
笔记-Java基础Class文件之常量池
常量池 紧接着版本号后的是常量池,它是一个表类型数据项目,意味着常量池会有多个数据项构成。它是Class文件的资源库,同时也是占用Class文件空间最多的数据项目之一。 常量池中的常量数量是不定的, 因此,在常量池的入口是一个u2类型数据,代表着常量池计数值,这个计数值是从1而不是0开始的。因此,常量池为21时,实际上你的常量是20,而第0项常量是空出来的,这样做的目的在于满足“不引用任何一个...原创 2019-04-16 11:15:03 · 293 阅读 · 1 评论 -
笔记-Java基础Class文件之访问标志
在常量池结束之后,紧接着的两个字节代表访问标志(access_flag),这个标志用于识别一些类或者接口层次的访问信息,包括:这个Class是类还是接口;是否定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final等。具体的标志位以及标志的含义如下表所示: access_flag中一共有有16个标志位可以使用,当前之定义了8个,没有使用到的标志位要求一律为...原创 2019-04-16 11:30:04 · 473 阅读 · 0 评论 -
笔记-Java基础Class文件之类索引,父类索引与接口索引
类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,而接口索引集合(interfaces)是一组u2类型的数据的集合,class文件中由这三项数据来确定这个类的继承关系。类索引用用于确定这个类的全限定名,父类索引用于确定这个类的父类的全限定名。由于Java语言不孕育多重继承,所以父父类索引只有一个,除了java.lang.Object之外,所有的Java类...原创 2019-04-16 11:56:32 · 258 阅读 · 0 评论