3. Class文件的本质和内部数据类型(无符号数和表)、Class文件的结构概述

博客介绍了Class文件的本质,它是以位字节为基础单位,可网络传播。其格式严格,采用类似C语言结构体存储,有两种数据类型:无符号数和表。还概述了Class文件的结构,虽会随发展调整,但基本框架稳定,最后给出文件结构思维导图及JVM专栏链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Class文件的本质和Class文件的格式(无符号数和表)

  1. 任何一个Class文件都对应着一个类或者接口的定义信息,Class文件不一定以磁盘文件的形式存在,它的本质是一组以8位字节为基础单位的二进制流,可以使用网络方式进行传播。
  2. 字节码文件的格式有着严格的规定,每个字节的顺序、代表的含义都不允许改变。
  3. Class文件采用类似于C语言结构体的方式进行存储,这种结构中只有两种数据类型:无符号数和表
    a)无符号数属于基本数据类型,以u1、u2、u4、u8分别代表1个字节、2个字节、4个字节、8个字节的无符号数。这些无符号数字可以用来表示各种意思。
    b)表是由多个无符号数或者其他表作为数据项构成的复合数据类型。表通常以_info结尾,通常还会在前面加上一个数字表示表的长度。
    在这里插入图片描述

2. Class文件的结构概述

  1. Class文件的结构不是一成不变的,随着JVM的发展,总是不可避免的会做出一些调整,但是其基本的结构和框架是非常稳定的。
  2. Class文件的总体结构如下:
    1) 魔数 - 识别当前的文件是不是一个Class文件
    2) Class文件版本
    3) 常量池
    4) 访问标志
    5) 类索引,父类索引,接口索引集合
    6)字段表集合
    7) 方法表集合
    8) 属性表集合 -
    在这里插入图片描述
  3. 详细的Class文件的结构如下(了解):
类型名称说明长度数量
u4magic魔数,识别Class文件格式4个字节1
u2minor_version副版本号(小版本)2个字节1
u2major_version主版本号(大版本)2个字节1
u2constant_pool_count常量池计数器2个字节1
cp_infoconstant_pool常量池表n个字节constant_pool_count-1
u2access_flags访问标识2个字节1
u2this_class类索引2个字节1
u2super_class父类索引2个字节1
u2interfaces_count接口计数器2个字节1
u2interfaces接口索引集合2个字节interfaces_count
u2fields_count字段计数器2个字节1
field_infofields字段表n个字节fields_count
u2methods_count方法计数器2个字节1
method_infomethods方法表n个字节methods_count
u2attributes_count属性计数器2个字节1
attribute_infoattributes属性表n个字节attributes_count

3.Class文件结构思维导图

在这里插入图片描述

更多JVM文章请访问我的JVM专栏:
https://blog.csdn.net/u011069294/category_10113093.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值