当前位置: 首页 > news >正文

网站模板下载工具邢台做wap网站的地方

网站模板下载工具,邢台做wap网站的地方,正邦logo设计,网站后台更新图片文章目录 一 概述二 Class 文件结构总结2.1 魔数2.2 Class 文件版本2.3 常量池2.4 访问标志2.5 当前类索引,父类索引与接口索引集合2.6 字段表集合2.7 方法表集合2.8 属性表集合 一 概述 在 Java 中#xff0c;JVM 可以理解的代码就叫做字节码#xff08;即扩展名为 .class … 文章目录 一 概述二 Class 文件结构总结2.1 魔数2.2 Class 文件版本2.3 常量池2.4 访问标志2.5 当前类索引,父类索引与接口索引集合2.6 字段表集合2.7 方法表集合2.8 属性表集合 一 概述 在 Java 中JVM 可以理解的代码就叫做字节码即扩展名为 .class 的文件它不面向任何特定的处理器只面向虚拟机。Java 语言通过字节码的方式在一定程度上解决了传统解释型语言执行效率低的问题同时又保留了解释型语言可移植的特点。所以 Java 程序运行时比较高效而且由于字节码并不针对一种特定的机器因此Java 程序无须重新编译便可在多种不同操作系统的计算机上运行。 ClojureLisp 语言的一种方言、Groovy、Scala 等语言都是运行在 Java 虚拟机之上。下图展示了不同的语言被不同的编译器编译成.class文件最终运行在 Java 虚拟机之上。.class文件的二进制格式可以使用 WinHex 查看。 可以说.class文件是不同的语言在 Java 虚拟机之间的重要桥梁同时也是支持 Java 跨平台很重要的一个原因。 二 Class 文件结构总结 根据 Java 虚拟机规范类文件由单个 ClassFile 结构组成 ClassFile {u4 magic; //Class 文件的标志u2 minor_version;//Class 的小版本号u2 major_version;//Class 的大版本号u2 constant_pool_count;//常量池的数量cp_info constant_pool[constant_pool_count-1];//常量池u2 access_flags;//Class 的访问标记u2 this_class;//当前类u2 super_class;//父类u2 interfaces_count;//接口u2 interfaces[interfaces_count];//一个类可以实现多个接口u2 fields_count;//Class 文件的字段属性field_info fields[fields_count];//一个类会可以有多个字段u2 methods_count;//Class 文件的方法数量method_info methods[methods_count];//一个类可以有个多个方法u2 attributes_count;//此类的属性表中的属性数attribute_info attributes[attributes_count];//属性表集合 }下面详细介绍一下 Class 文件结构涉及到的一些组件。 Class文件字节码结构组织示意图 之前在网上保存的非常不错原出处不明 2.1 魔数 u4 magic; //Class 文件的标志每个 Class 文件的头四个字节称为魔数Magic Number,它的唯一作用是确定这个文件是否为一个能被虚拟机接收的 Class 文件。 程序设计者很多时候都喜欢用一些特殊的数字表示固定的文件类型或者其它特殊的含义。 2.2 Class 文件版本 u2 minor_version;//Class 的小版本号u2 major_version;//Class 的大版本号紧接着魔数的四个字节存储的是 Class 文件的版本号第五和第六是次版本号第七和第八是主版本号。 高版本的 Java 虚拟机可以执行低版本编译器生成的 Class 文件但是低版本的 Java 虚拟机不能执行高版本编译器生成的 Class 文件。所以我们在实际开发的时候要确保开发的的 JDK 版本和生产环境的 JDK 版本保持一致。 2.3 常量池 u2 constant_pool_count;//常量池的数量cp_info constant_pool[constant_pool_count-1];//常量池紧接着主次版本号之后的是常量池常量池的数量是 constant_pool_count-1常量池计数器是从1开始计数的将第0项常量空出来是有特殊考虑的索引值为0代表“不引用任何一个常量池项”。 常量池主要存放两大常量字面量和符号引用。字面量比较接近于 Java 语言层面的的常量概念如文本字符串、声明为 final 的常量值等。而符号引用则属于编译原理方面的概念。包括下面三类常量 类和接口的全限定名字段的名称和描述符方法的名称和描述符 常量池中每一项常量都是一个表这14种表有一个共同的特点开始的第一位是一个 u1 类型的标志位 -tag 来标识常量的类型代表当前这个常量属于哪种常量类型 类型标志tag描述CONSTANT_utf8_info1UTF-8编码的字符串CONSTANT_Integer_info3整形字面量CONSTANT_Float_info4浮点型字面量CONSTANT_Long_info长整型字面量CONSTANT_Double_info双精度浮点型字面量CONSTANT_Class_info类或接口的符号引用CONSTANT_String_info字符串类型字面量CONSTANT_Fieldref_info字段的符号引用CONSTANT_Methodref_info10类中方法的符号引用CONSTANT_InterfaceMethodref_info11接口中方法的符号引用CONSTANT_NameAndType_info12字段或方法的符号引用CONSTANT_MothodType_info16标志方法类型CONSTANT_MethodHandle_info15表示方法句柄CONSTANT_InvokeDynamic_info18表示一个动态方法调用点 .class 文件可以通过javap -v class类名 指令来看一下其常量池中的信息(javap -v class类名- temp.txt 将结果输出到 temp.txt 文件)。 2.4 访问标志 在常量池结束之后紧接着的两个字节代表访问标志这个标志用于识别一些类或者接口层次的访问信息包括这个 Class 是类还是接口是否为 public 或者 abstract 类型如果是类的话是否声明为 final 等等。 类访问和属性修饰符: 我们定义了一个 Employee 类 package top.snailclimb.bean; public class Employee {... }通过javap -v class类名 指令来看一下类的访问标志。 2.5 当前类索引,父类索引与接口索引集合 u2 this_class;//当前类u2 super_class;//父类u2 interfaces_count;//接口u2 interfaces[interfaces_count];//一个类可以实现多个接口类索引用于确定这个类的全限定名父类索引用于确定这个类的父类的全限定名由于 Java 语言的单继承所以父类索引只有一个除了 java.lang.Object 之外所有的 java 类都有父类因此除了 java.lang.Object 外所有 Java 类的父类索引都不为 0。 接口索引集合用来描述这个类实现了那些接口这些被实现的接口将按 implements (如果这个类本身是接口的话则是extends) 后的接口顺序从左到右排列在接口索引集合中。 2.6 字段表集合 u2 fields_count;//Class 文件的字段的个数field_info fields[fields_count];//一个类会可以有个字段字段表field info用于描述接口或类中声明的变量。字段包括类级变量以及实例变量但不包括在方法内部声明的局部变量。 field info(字段表) 的结构: access_flags: 字段的作用域public ,private,protected修饰符是实例变量还是类变量static修饰符,可否被序列化transient 修饰符,可变性final,可见性volatile 修饰符是否强制从主内存读写。name_index: 对常量池的引用表示的字段的名称descriptor_index: 对常量池的引用表示字段和方法的描述符attributes_count: 一个字段还会拥有一些额外的属性attributes_count 存放属性的个数attributes[attributes_count]: 存放具体属性具体内容。 上述这些信息中各个修饰符都是布尔值要么有某个修饰符要么没有很适合使用标志位来表示。而字段叫什么名字、字段被定义为什么数据类型这些都是无法固定的只能引用常量池中常量来描述。 字段的 access_flag 的取值: 2.7 方法表集合 u2 methods_count;//Class 文件的方法的数量method_info methods[methods_count];//一个类可以有个多个方法methods_count 表示方法的数量而 method_info 表示方法表。 Class 文件存储格式中对方法的描述与对字段的描述几乎采用了完全一致的方式。方法表的结构如同字段表一样依次包括了访问标志、名称索引、描述符索引、属性表集合几项。 method_info(方法表的) 结构: 方法表的 access_flag 取值 注意因为volatile修饰符和transient修饰符不可以修饰方法所以方法表的访问标志中没有这两个对应的标志但是增加了synchronized、native、abstract等关键字修饰方法所以也就多了这些关键字对应的标志。 2.8 属性表集合 u2 attributes_count;//此类的属性表中的属性数attribute_info attributes[attributes_count];//属性表集合在 Class 文件字段表方法表中都可以携带自己的属性表集合以用于描述某些场景专有的信息。与 Class 文件中其它的数据项目要求的顺序、长度和内容不同属性表集合的限制稍微宽松一些不再要求各个属性表具有严格的顺序并且只要不与已有的属性名重复任何人实现的编译器都可以向属性表中写 入自己定义的属性信息Java 虚拟机运行时会忽略掉它不认识的属性。
http://www.dnsts.com.cn/news/208269.html

相关文章:

  • 做gif表情包网站化妆品销售网站的源代码
  • 怎么用apache做网站免费上线个人网站
  • 广州制作企业网站竞价排名是什么意思
  • 构建自己网站网站更换域名需要重新备案吗
  • 中小学生做试卷的网站淄博网站制作平台形象
  • 门户网站开发架构前台网站开发技术
  • 自己做网站练手做网站客户需要提供的资料
  • 浅析我国门户网站建设不足江门网站优化排名
  • 织梦 电影网站 模板衡水做网站改版
  • 网站目录创建下载链接招聘网58同城求职信息
  • 文件标签wordpress超级优化残剑
  • 石狮建设局网站企业所得税是什么意思
  • 手机网站 域名解析上饶公司做网站
  • 城乡建设管理局的网站iapp源码
  • 网站空间 jsp怎么查网站关键词排名
  • 开发网站公司怎么样中文网站开发语言
  • 制作网站费怎么做会计科目电商网站建设实验心得1500
  • 商务网站建设实训报告1500字深圳市建设交易网
  • 计算机课程网站建设实训报告总结社区网站 租用服务器还是只需要购买空间
  • 做年会的网站理发培训专业学校
  • 重庆网站建设途锦科技电商设计需要具备什么
  • 网站搜索引擎优化主要方法寻找郑州网站建设
  • 怎么样关闭网站驻马店专业网站建设
  • 免费的网站空间廊坊百度关键词排名平台
  • 网站建设ppt方案模板下载网站网页转小程序教程
  • 企业不开了网站备案吗怎么注册公司域名邮箱
  • 东坝地区网站建设网站建设成都云
  • 设计做笔记的网站cn域名著名网站
  • 南县网站设计河南做网站需要多少钱
  • 做网站logo用啥软件备案查询