美文网首页
第6章 类文件结构

第6章 类文件结构

作者: MikeShine | 来源:发表于2020-02-13 10:26 被阅读0次

写在前面

这一章不是重点,我们主要来了解一下 6.3 小节,关于 Class 类文件结构的部分。明白 一个 Class文件(字节码文件)到底包含了哪些内容。


6.3 类文件结构

Class 文件基本结构

Class 文件是一组以 8 字节为基础单位的二进制流。各种数据紧凑排列,没有分隔符,没有空隙。
只存 无符号数

  • 无符号数:就是无符号数。u1/ u2 表示1/2 个字节的无符号数。
  • 表:由无符号数或者其他表构成的复合数据类型。整个 Class 文件本质也可以看成是一张表。如下图。


    Class 文件的表结构

具体分为7个部分:魔数与文件版本、常量池、访问标志、索引、字段表、方法表、属性表

1. 魔数与Class 文件的版本

  • 魔数(Magic Number)就是Class 文件的前4个字节,是用来 确定这个文件是否为一个能被虚拟机接受的Class文件 。 Class 文件的 MagicNumber为 0xCAFEBABE(咖啡宝贝)。
  • Class 文件版本是紧接着魔数后面的4个字节,用来指明 JDK 的版本。次版本号 + 主版本号

2. 常量池

常量池位置
  • 紧接着版本号之后就是常量池,是 Class 文件中占空间最大的部分。
  • 常量池入口,有一个 u2 类型的数据作为 常量池容量计数(constant_pool_count),从1开始计数
常量池中数据类型
  • 字面量:String 字符串,和 final 的常量
  • 符号引用:简单理解为在编译阶段,引入的其他类,并不知道地址,所以用符号来代替描述这个类的相关信息。

3. 访问标志

常量池结束后,紧跟着两个字节是访问标志(access_flags)。识别一些类或者接口层次的访问信息。
比如:这个类是 class 还是 interface;是 public 还是 abstract 等。

4. 类索引、父类索引、接口索引集合

三者各占2个字节。
Class 文件用这6字节的索引来确定 这个类 的继承关系。

5. 字段表集合

字段(field):包含类级变量(static)和 实例级变量;但是bu包含方法内部定义的局部变量。


字段表格式
  • 访问标志(access_flags):字段表首先是2字节的字段修饰符,用来说明该字段是不是 public/ final 等。
  • 名称索引(name_index):字段的简单名称
  • 描述符索引(descriptor_index):字段和方法的描述符。描述符指字段的数据类型、方法的参数列表

6. 方法表集合

跟字段表集合的结构一致。依次是访问标志(access_flags),名称索引(name_index),描述符索引(descriptor_index),属性表集合(attributes)

7. 属性表集合

Class 文件、字段表、方法表都可以含有自己的属性表集合。用于描述某些场景的专有信息

不是很懂这一部分,知道有这个东西就行了。

相关文章

  • 深入理解java虚拟机-笔记

    第6章类文件结构 6.1 概述 6.2 无关性基石 6.3 Class类文件的结构 java虚拟机不和包括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把字节码解释给操作系统,或者是编译成...

网友评论

      本文标题:第6章 类文件结构

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