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

免费网站模板 html注册一个商标多少钱

免费网站模板 html,注册一个商标多少钱,新泰营销型网站建设,二手购物网站建设方案经过前几篇文章#xff0c; 终于将常量池介绍完了#xff0c; 之所以花这么大的功夫介绍常量池#xff0c; 是因为对于理解class文件格式#xff0c;常量池是必须要了解的#xff0c; 因为class文件中其他地方#xff0c;大量引用了常量池中的数据项。 对于还不了解常量池…经过前几篇文章 终于将常量池介绍完了 之所以花这么大的功夫介绍常量池 是因为对于理解class文件格式常量池是必须要了解的 因为class文件中其他地方大量引用了常量池中的数据项。 对于还不了解常量池的读者 如果想要深入了解class文件格式 或者想继续读这篇博客和本专栏以后的博客 那么我建议先把我前面的几篇博客读一下把常量池的结构熟悉一下 对于理解后面的内容很有帮助。 虽然介绍完了常量池 但是class文件中位于常量池下面的内容还有很多呢。 接下来 我们就分析class文件中位于常量池下面的内容 不用担心 只要把常量池搞明白了 这些内容就会很容易理解。 在开始进入正文之前 在这里再次给出class文件的整体格式。 这个表格曾出现在 深入理解Java Class文件格式一 这篇文章中。 之所以把这个表格列在这里 是想再次给读者一个class文件的总体概览。表格的内容如下 下面我们就开始介绍class文件中的其他内容。 class文件中的访问标志信息 从上面的表格可以看出 位于常量池下面的2个字节是access_flags 。 access_flags 描述的是当前类或者接口的访问修饰符 如public private等 此外 这里面还存在一个标志位 标志当前的额这个class描述的是类 还是接口。access_flags 的信息比较简单 下面列出access_flags 中的各个标志位的信息。 其他标志就不做介绍了 这些标志都很简单。 读者感觉比较陌生的可能是ACC_SUPER这个标志。 读者会想 类型不能被super关键字修饰啊 那这个ACC_SUPER是做什么的呢表中可以看出 它的含义是使用新的invokespecial语义 。 invokespecial是一个字节码指令 用于调用一个方法 一般情况下 调用构造方法或者使用super关键字显示调用父类的方法时 会使用这条字节码指令。 这正是ACC_SUPER这个名字的由来。 在java 1.2之前 invokespecial对方法的调用都是静态绑定的 而ACC_SUPER这个标志位在java 1.2的时候加入到class文件中 它为invokespecial这条指令增加了动态绑定的功能。 这里可能有几个概念读者不是很明白 如静态绑定 动态绑定等 这些概念会在以后的博客中详细介绍。 还有一点需要说明 既然access_flags 出现在class文件中的类的层面上 那么它只能描述类型的修饰符 而不能描述字段或方法的修饰符 希望读者不要将这里的access_flags 和后面要介绍的方法表和字段表中的访问修饰符相混淆。 此外 在Java 5 的中 引入和注解和枚举的新特性 那么可以推测 ACC_ANNOTATION 和 ACC_ENUM是在Java 5版本中加入的。 class文件虽然总体上保持前后一致性 但他也不是一成不变的 也会跟着Java版本的提升而有所改变 但是总体来说 class文件格式还是相对稳定的 变动的地方不是很多。 class文件中的this_class 访问标志access_flags 下面的两个字节叫做this_class 它是对当前类的描述。 它的两个字节的数据是对常量池中的一个CONSTANT_Class_info数据项的一个索引。 CONSTANT_Class_info在上面的文章中已经介绍过了。 CONSTANT_Class_info中有一个字段叫做name_index 指向一个CONSTANT_Utf8_info 在这个CONSTANT_Utf8_info 中存放着当前类的全限定名。 如果当前类为Person package com.jg.zhang;public class Person {int age;int getAge(){return age;} }将Person.class反编译后 可以在常量池中看到如下两项 Constant pool:#1 Class #2 // com/jg/zhang/Person#2 Utf8 com/jg/zhang/Person......... ......... 这两项就是当前类的信息。 其中索引为1的CONSTANT_Class_info会被class文件中的this_class所引用。 下面给出示例图其中虚线范围内表示常量池的区域 class文件中的super_class super_class紧跟在this_class之后。 它和this_class一样是一个指向常量池数据项的索引。 它指向一个CONSTANT_Class_info 这个CONSTANT_Class_info数据项描述的是当前类的超类的信息。CONSTANT_Class_info中的name_index指向常量池中的一个CONSTANT_Utf8_info CONSTANT_Utf8_info 中存放的是当前类的超类的全限定名。 如果没有显式的继承一个也就是说如果当前类是直接继承Object的 那么super_class值为0 。 我们在前面的文章中提到过 如果一个索引值为0 那么就说明这个索引不引用任何常量池中的数据项 因为常量池中的数据项是从1开始的。 也就是说 如果一个类的class文件中的super_class为0 那么就代表该类直接继承Object类。 下面以代码来说明 package com.jg.zhang;public class Programer extends Person{Computer computer;public Programer(Computer computer){this.computer computer;}public void doWork(){computer.calculate();} }上面的Programer类继承自Person类。 那么反编译Programer .class 它的常量池中会存在如下信息 Constant pool:......... .........#3 Class #4 // com/jg/zhang/Person#4 Utf8 com/jg/zhang/Person 这两项就是当前类的父类的信息。 其中索引为3的CONSTANT_Class_info会被class文件中的super_class引用。 下面给出示例图其中虚线范围内表示常量池的区域 class文件中的interfaces_count和interfaces 紧接着super_class的是interfaces_count 表示当前类所实现的接口的数量或者当前接口所继承的超接口的数量。 注意 只有当前类直接实现的接口才会被统计 如果当前类继承了另一个类 而另一个类又实现了一个接口 那么这个接口不会统计在当前类的interfaces_count中。 在interfaces_count后面是interfaces 他可以看做是一个数组 其中的每个数组项是一个索引 指向常量池中的一个CONSTANT_Class_info 这个CONSTANT_Class_info又会引用常量池中的一个CONSTANT_Utf8_info 这个CONSTANT_Utf8_info 中存放着有当前类型直接实现或继承的接口的全限定名。 当前类型实现或继承了几个接口 在interfaces数组中就会有几个数项与之相对应。 下面看代码示例 package com.jg.zhang;public class Plane implements IFlyable, Cloneable{Overridepublic void fly() {} }Plane类实现了一个自定义的IFlyable接口 还实现了一个JDK中的Cloneable接口 那么它的常量池中会有如下信息 Constant pool:......... .........#5 Class #6 // com/jg/zhang/IFlyable#6 Utf8 com/jg/zhang/IFlyable#7 Class #8 // java/lang/Cloneable#8 Utf8 java/lang/Cloneable......... ......... 这四项数据就是当前的Plane类所实现的接口的信息。 第五项和第六项描述了Plane所实现的IFlyable接口 第七项和第八项描述了Plane所实现的接口Cloneable接口。 下面是示意图其中虚线范围内表示常量池的区域 总结 在本篇博客中 继续讲解了class文件中常量池以下的部分。 主要讲解了三个部分 分别是this_class super_class interfaces_count和interfaces 。 这三个数据项分别描述了当前类就是当前class文件所在的类 当前类所继承的超类 和当前类所实现的接口如果当前class文件代表的是一个接口 那么 interfaces_count和interfaces描述的是当前接口所继承的超接口。 这几个数据项都持有指向常量池的索引。 真实的信息都是存放在常量池中的 只不过常量池中的这些信息会被this_class super_class interfaces_count和interfaces 引用。 通过本篇博客我们可以知道源文件中的当前类 当前类的超类以及当前类的超接口在class文件中是如何被描述的。 在下一篇博客中 将会讲解源文件中的定义的字段 声明的方法在class文件中是如何描述的。
http://www.yutouwan.com/news/395312/

相关文章:

  • 建设厅网站174号文网站建设上传服务器步骤
  • 大连网站设计培训班企业邮箱怎么注册的
  • 微网站建设的第一步dz采集wordpress
  • 四川省住房和城乡建设厅网站首页主机网站建设
  • 教你如何做好网站中小企业网络营销案例
  • php做各种网站类型得模板只用html5可以做网站吗
  • 杭州网站建设公司排行wordpress 4.9中文
  • 成品ppt网站国外做外贸的物流网站
  • 网站素材类型西部网站管理助手4.0
  • 建设市民中心网站手机发布WordPress
  • wordpress源码买卖抖音seo推广
  • 网站开发需求ppt广告网站建设案例
  • 3d演示中国空间站建造历程网站文字列表页模板
  • 吉安哪家网站建设公司好网站建设应该注意什么
  • php网站模板网站空间付款方式
  • 名师工作室建设名师网站做网站不给源码吗
  • 做设计都有什么网站上海市建筑网
  • 网站群建设进度管家婆免费资料网站
  • 网站怎么自己做创建个人主页网站
  • 阿里网站建设需要准备什么软件网站服务器位于北美
  • 网站建设pad版本是什么网站建设设计 飞沐
  • 如何创建一个简单的网站云南建设招标网站首页
  • 广东深圳网站建设微信商城开发泰安房产交易网官网
  • 查询建设工程规范的网站免费个人主页注册
  • 什么叫网站后台网页游戏排行榜前十不用氪金
  • 一个网站怎么做流量统计网站流程图制作软件
  • 网站建设中 html模板知名网站设计
  • 怎么做网站的动效乐都区wap网站建设公司
  • 怎么才能在百度上做网站推广网站建设网站需要什么
  • 网站上做旅游卖家要学什么软件番禺制作网站开发