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

梁露 网站建设与实践产品设计作品集欣赏

梁露 网站建设与实践,产品设计作品集欣赏,我不需要做网站,仿网站建设教程视频本文继续使用上次的Test.class文件#xff0c;它是由下面单独的一个类文件编译而成的#xff0c;没有包。 6. 索引#xff08;Index#xff09; 索引又分类索引、父类索引和接口索引集合#xff0c;类索引#xff08;this_class#xff09;和父类索引#xff08;super…本文继续使用上次的Test.class文件它是由下面单独的一个类文件编译而成的没有包。 6. 索引Index 索引又分类索引、父类索引和接口索引集合类索引this_class和父类索引super_class都是一个u2类型的数据而接口索引集合interfaces是一组u2类型的数据的集合Class文件依靠这些索引数据来确定这个类的继承关系。所有类除了java.lang.Object都只有一个父类索引Java的单继承即父类索引不为0只有java.lang.Object的父类索引为0。接口索引用来描述该类实现了哪些接口它们的出现顺序是按照implements语句后接口的先后顺序出现的如果这个类是一个接口就按照extends后面出现的顺序来。 类索引和父类索引各自指向一个CONSTANT_Class_info的类描述符常量然后通过CONSTANT_Class_info可以定位到一个CONSTANT_Utf8_info类型的常量中的全限名字符串。而接口索引集合则以接口计数器开头和前面常量池类似若计数器表示n则后面紧跟着的n个u2数据是表示该类实现的n个接口的类索引分别指向对应的类描述符常量。 全限名java/lang/Object表示Object类的全限名将类全名中的“.”替换成“/”而已多个全限名之间是“;”分隔。 仍然以我上次的那个Test.class文件为例这里三个u2类型的值分别为Ox0005、Ox0006、Ox0000前两个分别表示的是类索引、父类索引所指向的常量描述符。第三个表示接口集合的个数这里为0即没有实现任何接口。假设为2则表示接下来的2个u2数据表示实现的两个接口每个u2数据也指向的是常量描述符。 7.字段表集合Field Info 字段表field_info用于描述接口或者类中声明的变量。字段包括类级变量以及实例级变量但不包括在方法内部声明的局部变量。字段包含的信息比较多包含以下内容 字段的作用域public、private、protect修饰符变量类型类变量or实例变量static可变性final并发可见性volatile可否序列化transient数据类型基本数据类型、对象、数组字段名称 上面的这些信息除了字段数据类型和字段名称其他都是以布尔值来描述的有就是true且对应一个标志位没有则false这种表示方法和上一节的Access Flags一样。字段数据类型和字段名称是引用的常量池中的常量来描述可能是CONSTANT_Class_info也可能是CONSTANT_Utf8_info。 根据Java语言的语法我们可以知道ACC_PUBLIC、ACC_PRIVATE、ACC_PROTECTED三个标志只能选一个ACC_FINAL、ACC_VOLATILE不能同时存在接口必须有ACC_PUBLIC、ACC_STATIC、ACC_FINAL标志。 描述符 描述符的作用是用来描述字段的数据类型、方法的参数列表数量、类型、顺序和返回值。其中基本数据类型以及void返回值类型都是用一个大写字母来表示的对象的类型由一个L加对象全限名表示。 基本数据类型和普通类型都已经知道怎么表示了但Java中有一个特殊类型就是数组类型它是在编译期产生的它的描述符是在变量描述符前面加一个[如果是二维则加两个[比如[[。例如一个String[][]记录为[[Ljava/lang/String一个int[]记录为[I。 如果是描述一个方法则在描述符前面加一个括号“()”如果有参数则在其中按顺序添加描述符即可。例如一个String toString(char[] c,int a,String[] b)的描述符为“([CI[Ljava.lang.String)Ljava.lang.String”。 这里同样以Test.class文件来验证第一个u2数据是容量技术器fields_count这里是Ox0000说明没有字段表数据看文章开头的java代码确实没有定义任何字段。由于在编译class文件开始没有考虑周全没有定义字段这里容量技术器为0也就看不到后面的字段描述内容这里先假设是Ox0001即有一个字段。第二个u2数据是访问标识符access_flags假设这里是Ox0002说明字段标志为ACC_PRIVATE。第三个u2数据是字段名称name_index假设值为Ox0005指向#5的常量池CONSTANT_Utf8_info字符串。第四个u2数据是字段描述符这里是Ox0007指向#7的常量池字符串。 8. 方法表集合 方法表的描述和字段表集合描述形式一样只需要按照对应的表格对照就可以了。方法表结构依次包含了access_flags访问标志、name_index方法名索引、descriptor_index描述符索引、attribute属性表集合几项。方法内的具体代码存放在属性表集合attribute的名为“Code”的属性里面。 方法表结构表 方法访问标志表 继续以Test.class文件分析容量计数器methods_count的值为Ox0002表示由两个方法疑惑看文章开头的代码只有一个main方法啊为什么会有两个其实字节码中包含了平时省略了的无参构造方法init。 紧跟着的是2个方法描述集合这里以第一个无参构造来解释首先是访问标志access_flags值是Ox0001查表可知是ACC_PUBLIC类型的然后是方法名索引name_index值是Ox0007指向的是常量池CONSTANT_Utf8_info字符串即#7我们查看反编译的代码可以看到#7确实是init。 然后是描述符索引descriptor_index值是Ox0008指向的是常量项#8反编译后看到是()V构造方法无返回值所以用的void的标识字符V但是在书写代码时不能显式加void因为其验证是在编译期。紧接着的是属性表集合的属性计数量attributes_count这里是Ox0001说明只有一个属性即前面说的“Code”属性。 接下来的就是分别表示每一个属性的具体指向这里只有一个当然就只需看一个u2数据这里是Ox0009指向的是常量项#9反编译结果#9确实是Code。 如果方法在子类中没有被重写方法表集合中就不会出现来自父类的信息。 从方法表集合可以看出Class文件对一个方法的特征识别《Java虚拟机规范》称之为特征签名有很多比如方法描述符、访问控制标志、返回值、属性表等。 这里我想起来了之前腾讯一个面试官问我的问题“重载的验证是在哪个阶段”当时我没回答好这个问题看了《深入理解Java虚拟机》这一节的内容才知道对于Java方法的重载是在编译器验证的在Java语义里规定只要方法名、参数内容及顺序相同则视为非法重载而对返回值、修饰符等没有严格要求。而在Class文件里对一个方法的特征签名比编译期的多也就是说如果两个方法有相同的名称和特征签名但返回值不同那么也是可以合法存在于同一个Class文件的。 9.属性表集合 属性表attribute_info存在于Class文件、字段表、方法表等它用于描述某些场合专有的信息。在class文件中对属性表的限定并不是很严格只要不要与已有属性名重复任何不人实现的编译器都可以向属性表中写入自己定义的属性信息虚拟机在运行时会忽略掉它不认识的属性。这一部分内容较多并且不固定建议读者阅读最新的《Java虚拟机规范》或《深入理解Java虚拟机——周志明 著》。 本文是笔者阅读《深入理解Java虚拟机》一书时的简单总结和实践。参考文献《Java虚拟机规范第二版》、《深入理解Java虚拟机》 END
http://www.zqtcl.cn/news/385785/

相关文章:

  • 湖南建设科技节能协会网站武夷山景区网站建设特点
  • 那些网站建设的好百度搜索风云排行榜
  • 网站开发 模板 c沈阳市建设工程质量检测中心网站
  • 企业网站设计专业好吗做钓鱼网站要具备什么
  • 广西备案工信部网站用asp.net做后台网站
  • 静态网站漏洞wordpress 外卖
  • 暗网做网站温州做网络推广的公司
  • 网站描述 修改上海火迎网络推广运营优化
  • 黄石网站建设哪家专业做个网站费用
  • 免费做的网站怎么设置域名解析宁夏百度seo
  • 化妆品产品的自建网站有哪些阿里云cdn wordpress错位
  • 增加网站流量网站新闻字体
  • 做外贸建网站需要推广吗服装如何做微商城网站
  • 上海市建设安全协会网站查询考试伪静态 wordpress
  • 网站免费建站o网站编程多少钱
  • 建设网站开发海外推广服务
  • 网站建设需要提供的资料文档营销平台建设
  • 做个响应式网站多少钱河南网络推广系统
  • wordpress的后台文章图文发布清远市seo广告优化
  • 长沙的互联网网站公司招标文件免费下载网站
  • icp备案系统网站品网站建设公司排名
  • 什么网站可以做音乐相册可信的品牌网站建设
  • 洛阳网站建设优惠公司网站查询ip地址
  • 学校网站模版电影网站要怎样做才有出路
  • 无锡网站建设 微信企业网站建设与管理期末考试
  • 海南海口网站开发公司怎么建立微网站?
  • 网站建设 鄂icp备app 微网站
  • 西安做网站seo网站站内优化怎么做
  • 建设网站方案公司wordpress 视差主题
  • 网站 建设 语言wordpress同步