南京企业建设网站设计,有哪些做网游单机版的网站,餐饮品牌vi设计包括哪些,厦门国外网站建设公司第6章 类文件结构
6.1 概述
略
6.2 无关性的基石
1.平台无关性#xff1a;可在各os的JVM重运行 2.语言无关性#xff1a;无关语言#xff0c;只要可以编译成.class文件#xff0c;便可以在JVM上运行
6.3 class类文件的结构
.class文件也可以直接动态生成送入类加载器…第6章 类文件结构
6.1 概述
略
6.2 无关性的基石
1.平台无关性可在各os的JVM重运行 2.语言无关性无关语言只要可以编译成.class文件便可以在JVM上运行
6.3 class类文件的结构
.class文件也可以直接动态生成送入类加载器并不一定需要存在文件但动态生成的格式也是确定的。 .class中有两种数据类型 1无符号数U1、U2、U4、U8表示数字、索引引用UTF-8等。 2表由多个无符号数或其他表构成的复合数据类型
6.3.1 魔数与class文件的版本
.class文件开头为一个四字节的魔数他代表着该文件为JVM可执行文件 【因为扩展名可以随意改动所以很多很多时候使用文件开头的魔数判断文件类型】 .class文件5、6字节为次版本号7、8字节为主版本号JVM只能执行比自己版本低的calss文件
6.3.2 常量池
目前有17种常量主要常量有两大类 1字面量文本字符串与final常量值 2符号引用P218 各常量表格式“P222
6.3.3 访问标志
标识类是否为抽象类是否为借口、是否final等占用两字节供16各标志位
6.3.4 类索引父类索引与接口索引集合
类索引父类索引用同一个U2表示接口索引由集合表示指向一个类描述符常量常量中的索引值又指向全限定名字符串
6.4.5 字段表集合
1字段访问标志是否public、是否static、volatile等 2简单名称与描述符 3额外信息如初始值指针
6.3.6 方发表集合
同上方法字节码存放在code属性表集合中可能添加.java中不存在的构造器方法还有比如内部类访问外部的指针等
6.3.7 属性表集合
目前有29种属性表 P230
6.4 字节码指令简介
Java虚拟机指令由操作码及0-多个操作数构成面向操作数栈。
6.4.1 字节码与数据类型
Java编译器会在编译/运行期间将byte、short、boolean、char转换为int类型数据并使用int操作指令运算。
6.4.2 加载和存储指令
将数据在局部变量表和操作数栈之间来回传输
6.4.3 运算指令
数学运算、位运算、比较指令等
6.4.4 类型转换指令
小转大范围安全转化 大转小范围可能丢失精度
6.4.5 对象创建与访问指令
对象创建与访问字段、取数组长度、类型检查等
6.4.6 操作数栈管理指令
操作操作数栈
6.4.7 控制转移指令
条件分支指令可修改PC寄存器的值来改变执行的语句
6.4.8 方法调用和返回指令
调用各种方法
6.4.9 异常处理指令
athrow显示抛出异常throw语句
6.4.10 同步指令
monitorenter与monitorexit支持synchronized关键字
6.5 公有设计私有实现
在满足Java虚拟机规范的前提下各组织可以自行实现JVM并使用各种优化
6.6 class文件结构的发展
略