JAVA虚拟机【类文件结构】

本文详细探讨了JAVA虚拟机的类文件结构,包括魔数与版本、常量池、访问标志、类索引、字段表、方法表以及属性表集合,特别是Code、Exceptions、LineNumber和ConstantValue等关键属性,揭示了JAVA字节码的本质。
摘要由CSDN通过智能技术生成

代码编译的结果从本地机器吗转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。

1. 无关性的基石:

各种平台的虚拟机都统一使用字节码作为程序存储格式,这是平台无关的基石。同时,语言无关性也在被开发者所重视,JAVA虚拟机同样可以运行其它的程序。

2. class文件结构:

Class文件是以8位字节为基础单位的二进制流,中间没有分隔符,所以整个Class文件都是程序运行的必要元素。

Class文件以一种伪结构来存储数据,包括:无符号数和表。无符号数属于基本数据类型,以u1,u2,u4,u8代表1字节,2字节,4字节和8字节的无符号数。可以用来描述数字,索引引用,数量值或者按照utf-8编码的字符串值。表是由多个无符号数或者其他表构成的符合结构的数据。

2.1 魔数与Class文件版本

头4个字节称为魔数,唯一作用就是确认这个文件是否为一个能够被虚拟机接受的Class文件。0xCAFEBABE就是JAVA文件的魔数。5,6字节是次版本号,7,8是主版本号。

2.2 常量池

接着版本号后,就是常量池。常量池的入口处放置一项u2类型的数据,代表常量池的计数值。该计数值从1开始,如果是22,则表示总共有21个常量,索引范围1~21。

常量池中有两类常量:字面量和符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值