JVM笔记(5)--类文件结构

  Java程序通过 Javac编译器 编译成 字节码( *.class ) 然后通过 Java虚拟机 去执行,其中的字节码文件就是接下来要学习的内容。

第一部分:Java虚拟机的无关性

     1.平台无关性:在任何平台上只要安装虚拟机就可以运行。

      平台无关性----是基于字节码。

     2.语言无关性:任何语言都可以在虚拟机上运行。

      语言无关性----是基于虚拟机和字节码存储格式。

第二部分:Class类文件的结构

Class文件格式
类型名称数量中文名称
u4magic1 魔数
u2minor_version1次版本号
u2minor_version1主版本号
u2constant_pool_count1常量池
cp_infoconstant_poolconstant_pool_count-1 
u2access_flags1访问标识
u2this_class1类索引
u2super_class1父类索引
u2interfaces_count1接口索引集合
u2interfacesinterfaces_count 
u2fields_count1字段表集合
field_infofieldsfields_count 
u2methods_count1方法表集合
method_infomethodsmethods_count 
u2attributes_count1属性表集合
attribute_infoattributesattributes_count 

     1.class类文件存储数据的数据结构:(1)无符号数。(2)表。

      (1)无符号数:基本上是数据类型,以u1,u2,u4,u8分别代表1个字节,2个字节,4个字节,8个字节,无符号数一般来表示,数字,索引引用,数量值,utf-8组成的值。

      (2)表:它是由多个无符号数或其他表作为数据项构成的复合数据类型。

        作用:描述有层次关系的复合结构的数据。

      2.class类文件:它是一个有严格规定的文件,对于Class文件的数据项,对于顺序,大小,数量,都是有规定的,全部都能随意改变的。

第三部分:class文件中的魔数和版本号

     魔数:每一个文件的头4个字节被称之为魔数,他的唯一作用是确定这个文件是否可以被虚拟机接受的class文件

       class文件的版本号:第5和第6个字节代表次版本号。

              第7和第8个字节代表主板本号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值