美文网首页
类文件结构

类文件结构

作者: 44d95011b3f7 | 来源:发表于2018-09-19 11:36 被阅读0次

概述

Class文件是一组以8位字节为基础单位的二进制流,各个数据项目按照顺序紧地排列在CLass文件之中,中间没有添加任何分隔符。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干个8位字节进行存储。

根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这种伪结构中只有两种数据类型:无符号数和表。无符号数属于基本的数据类型,以u1、u2、u4、u8来分别代表1、2、4、8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。表是由多个无符号数或者其他表作为数据项构成的复合数据类型,所有表都习惯性地以“_info”结尾。

魔数与class文件的版本

每个class文件的头4个字节称为魔数,它的唯一作是确定这个文件是否为一个能被虚拟机接受的class文件。class文件的魔数获得很有“浪漫气息”,值为oxCAFEBABE。

紧接着魔数的4个字节存储的是class文件的版本号:第5和第6字节是次版本号,第7和第8字节是主版本号。

常量池

紧接着版本号之后的是常量池入口,常量池可以理解为class文件之中的资源仓库,它是class文件结构与其他项目关联最多的数据类型,也是占用class文件空间最大的数据项目之一,同时它还是在class文件中第一个出现的表类型数据项目。

常量池中主要存放两大类常量:字面量和符合引用。字面量比较接近于Java语言层面的常量概念,如文本字符串、声明为final的常量值等。而符号引用则属于编译原理方面的概念,包括了下面三类常量:

  1. 类和接口的全限定名
  2. 字段的名称和描述符
  3. 方法的名称和描述符

访问标志

在常量池结束之后紧接着的两个字节代表访问标志,这个标志用于识别一些类或者接口层次的访问信息,包括:这个class是类还是接口;是否定义为public类型;是否定义为abstract类型;如果是类的话,是否被声明为final等。

类索引、父类索引与接口索引集合

类索引和父类索引都是一个u2类型的数据,而接口索引集合是一组u2类型的数据集合,class文件中由这三项数据来确定这个类的继承关系。

字段表集合

字段表用于描述接口或者类中声明的变量。字段包括类级变量以及实例级变量,但不包括方法内部声明的局部变量。
字段表集合不会列出从超类或者父接口继承而来的字段,但有可能列出原本java代码中不存在的字段,譬如在内部类中为了保持对外部类的访问性,会自动添加指向外部类实例的字段。

方法表集合

方法表的结构如同字段表一样,依次包括了访问标志、名称索引、描述符索引、属性表集合。

此处略。。。

相关文章

  • 类文件结构【Class类文件的结构】

    概述 任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来,类或接口并不一定都得定义在文件里(如类或...

  • 类文件结构

    本文大体讲一下结构,着重从理解层面看,就是当时我最难理解的地方讲,并不会深入的讲解某一块的具体结构信息,如果要看结...

  • 类文件结构

    class文件结构 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑地排列在Cla...

  • 类文件结构

    类的二进制文件中的主要结构 无符号数和表 u1,u2,u4,u8。表由无符号数和表构成 魔数 1-4字节:确定文件...

  • 类文件结构

    概述 Class文件是一组以8位字节为基础单位的二进制流,各个数据项目按照顺序紧地排列在CLass文件之中,中间没...

  • 类文件结构

    一、概述 在计算机商业领域中,不同的硬件体系结构和不同的操作系统长期并存是必然的结果,所以Java 提出了“Wri...

  • 类文件结构

    语言无关性 JAVA虚拟机与Class文件关联,与具体的语言没关系。任何语言只要能编译成Cla...

  • 类文件结构

    语言无关性:jvm和字节码格式 jvm不和java在内的任何语言绑定,他只和“class”这种特定的二进制格式文件...

  • 类文件结构

    摘抄: 陈树义 Java技术精选 -各个语言的编译器吧文件编译成字节码,jvm把字节码解释给操作系统,或者是编译成...

  • 类文件结构

    前言 本文是《深入理解Java虚拟机》第6章的部分知识点,这一章正如作者所说,对数据结构的讲解确实枯燥,对于失眠治...

网友评论

      本文标题:类文件结构

      本文链接:https://www.haomeiwen.com/subject/xezbnftx.html