Class文件

本文详细介绍了Java Class文件的基本结构及组成元素,包括魔数、版本号、常量池、访问标志、类索引等,并解释了这些部分如何共同构成Class文件。

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

http://open.iteye.com/blog/179513


Class文件是什么?



Class文件是8bit的二进制流,数据项按顺序存储在class文件中,相邻项没有间隔,占据多个字节空间的项按照高位在前的顺序分为几个连续的字节存放。

class文件中,可变长度项的大小和长度位于实际数据之前,使得首先读出项的大小,然后读出项的数据



Class文件的内容:



magic:class文件的前4个字节,用于分辨class文件和非class文件
minor_version / major_version:魔数的后四位,表明不同的java版本号
constant_pool.count / constant_pool:版本号的后面是常量池,常量池存储文字字符串,final变量值,类名,方法名等。JVM把常量池组织为入口列表的形式
access_flag :2字节,表明类或者接口,以及是那种修饰符
this_class:对常量池的索引,此位置的常量池入口必须为constant_class_info表
supper_class:在此位置的常量池入口是一个指向超类的全限定名的constant_class_info入口
interfaces_count / interfaces:存储实现接口的数量以及接口
fields_count / fields:
metods_count / methods;从超类或者父接口继承的方法不被计入
attributes_count / attributes;
特殊字符串

全限定名:用斜线代替点
简单名称:一个指向类java/lang/Object所属方法String toString()的常量池入口有一个形如"toString"的方法名
描述符:
常量池
方法
常量池
属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值