当前位置: 首页 > news >正文 网站建设开题报告书品牌策划公司一般有什么职位 news 2025/10/27 0:09:43 网站建设开题报告书,品牌策划公司一般有什么职位,西双版纳傣族自治州天气,金山郑州阳网站建设this_class 指向常量池中索引为 2 的 CONSTANT_Class_info。super_class 指向常量池中索引为 3 的 CONSTANT_Class_info。由于没有接口#xff0c;所以 interfaces 的信息为空。 对应 class 文件中的位置如下图所示。 06、字段表 一个类中定义的字段会被存储在字段表#x… this_class 指向常量池中索引为 2 的 CONSTANT_Class_info。super_class 指向常量池中索引为 3 的 CONSTANT_Class_info。由于没有接口所以 interfaces 的信息为空。 对应 class 文件中的位置如下图所示。 06、字段表 一个类中定义的字段会被存储在字段表fields中包括静态的和非静态的。 来看这样一段代码。 public class FieldsTest {private String name; } 字段只有一个修饰符为 private类型为 String字段名为 name。可以用下面的伪代码来表示 field 的结构。 field_info {u2 access_flag;u2 name_index;u2 description_index; } access_flag 为字段的访问标记比如说是不是 public | private | protected是不是 static是不是 final 等。name_index 为字段名的索引指向常量池中的 CONSTANT_Utf8_info 比如说上例中的值就为 name。description_index 为字段的描述类型索引也指向常量池中的 CONSTANT_Utf8_info针对不同的数据类型会有不同规则的描述信息。 1对于基本数据类型来说使用一个字符来表示比如说 I 对应的是 intB 对应的是 byte。 2对于引用数据类型来说使用 L***; 的方式来表示L 开头; 结束比如字符串类型为 Ljava/lang/String;。 3对于数组来说会用一个前置的 [ 来表示比如说字符串数组为 [Ljava/lang/String;。 对应到 class 文件中的位置如下图所示。 看到这里相信你就能明白经常在 javap 命令中看到的一些奇怪的字符的意思了。 07、方法表 方法表和字段表类似区别是用来存储方法的信息包括方法名方法的参数方法的签名。 就拿 main 方法来说吧。 public class MethodsTest {public static void main(String[] args) {} } 先用 jclasslib 看一下大概的信息。 访问标记是 public static 的。方法名为 main。方法的参数为字符串数组返回类型为 Void。 对应到 class 文件中的位置如下图所示。 08、属性表 属性表是 class 文件中的最后一部分通常出现在字段和方法中。 来看这样一段代码。 public class AttributeTest {public static final int DEFAULT_SIZE 128; } 只有一个常量 DEFAULT_SIZE它属于字段中的一种就是加了 final 的静态变量。先通过 jclasslib 看一下它当中一个很重要的属性——ConstantValue用来表示静态变量的初始值。 Attribute name index 指向常量池中值为“ConstantValue”的常量。Attribute length 的值为固定的 2因为索引只占两个字节的大小。Constant value index 指向常量池中具体的常量如果常量类型为 int指向的就是 CONSTANT_Integer_info。 我画了一副图可以完整的表示字段的结构包含属性表在内。 对应到 class 文件中的位置如下图所示。 来看下面这段代码。 public class MethodCode {public static void main(String[] args) {foo();}private static void foo() {} } main 方法中调用了 foo 方法。通过 jclasslib 看一下它当中一个很重要的属性——Code 方法的关键信息都存储在里面。 Attribute name index 指向常量池中值为“Code”的常量。Attribute length 为属性值的长度大小。bytecode 存储真正的字节码指令。exception table 表示方法内部的异常信息。maximum stack size 表示操作数栈的最大深度方法执行的任意期间操作数栈深度都不会超过这个值。maximum local variable 表示临时变量表的大小注意并不等于方法中所有临时变量的数量之和当一个作用域结束内部的临时变量占用的位置就会被替换掉。code length 表示字节码指令的长度。 对应 class 文件中的位置如下图所示。 09、QA 评论区有读者问到“怎么通过索引值定位到在class 文件中的位置这个是咋算的” 在Java类文件中常量池是一个索引表它从索引值1开始计数每个条目都有一个唯一的索引。 常量池计数器在常量池之前类文件有一个16位的常量池计数器表示常量池中有多少项。它的值比实际常量数大1因为索引从1开始。常量池条目每个常量池条目的开始是一个标签1个字节表明了常量的类型如Class、Fieldref、Methodref等。根据这个类型后面跟着的数据结构也不同。 定位过程大致如下 读取常量池计数器首先从类文件的开头读取常量池计数器的值确定常量池中有多少条目。遍历常量池从常量池的第一项开始遍历。由于不同类型的常量长度不同需要根据每个常量的类型来确定它的长度。根据索引定位继续遍历直到到达所需的索引值。每次遍历时根据条目类型读取相应长度的数据直到达到目标索引。 可以抽象成一个数组和一个 for 循环就能明白了。 int[] constantPool new int[constantPoolCount]; for (int i 1; i constantPoolCount; i) {int tag constantPool[i];switch (tag) {case CONSTANT_Integer_info:i 4;break;case CONSTANT_Float_info:i 4;break;case CONSTANT_Long_info:i 8;break;case CONSTANT_Double_info:i 8;break;case CONSTANT_Utf8_info:int length constantPool[i 1];i length 1;break;case CONSTANT_String_info:i 2;break;case CONSTANT_Class_info:i 2;break;case CONSTANT_Fieldref_info:i 4;break;case CONSTANT_Methodref_info:i 4;break;case CONSTANT_InterfaceMethodref_info:i 4;break;case CONSTANT_NameAndType_info:i 4;break;case CONSTANT_MethodHandle_info:i 3;break;case CONSTANT_MethodType_info:i 2;break;case CONSTANT_InvokeDynamic_info:i 4;break;default:throw new RuntimeException(Unknown tag: tag);} } 10、小结 到此为止class 文件的内部算是剖析得差不多了希望能对大家有所帮助。第一次拿刀手有点颤如果哪里有不足的地方欢迎大家在评论区毫不留情地指出来 class 文件是一串连续的二进制由 0 和 1 组成但我们仍然可以借助一些工具来看清楚它的真面目。class 文件的内容通常可以分为下面这几部分魔数、版本号、常量池、访问标记、类索引、父类索引、接口索引、字段表、方法表、属性表。常量池包含了类、接口、字段和方法的符号引用以及字符串字面量和数值常量。访问标记用于识别类或接口的访问信息比如说是不是 public | private | protected是不是 static是不是 final 等。类索引、父类索引和接口索引用来确定类的继承关系。字段表用来存储字段的信息包括字段名字段的参数字段的签名。方法表用来存储方法的信息包括方法名方法的参数方法的签名。属性表用来存储属性的信息包括字段的初始值方法的字节码指令等。 相信大家看完这篇内容应该能对 class 文件有一个比较清晰的认识了。 文章转载自: http://www.morning.rptdz.cn.gov.cn.rptdz.cn http://www.morning.wjxtq.cn.gov.cn.wjxtq.cn http://www.morning.kysport1102.cn.gov.cn.kysport1102.cn http://www.morning.rbkml.cn.gov.cn.rbkml.cn http://www.morning.rknjx.cn.gov.cn.rknjx.cn http://www.morning.wgzzj.cn.gov.cn.wgzzj.cn http://www.morning.fksrg.cn.gov.cn.fksrg.cn http://www.morning.pwlxy.cn.gov.cn.pwlxy.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.dbjyb.cn.gov.cn.dbjyb.cn http://www.morning.cmhkt.cn.gov.cn.cmhkt.cn http://www.morning.wzjhl.cn.gov.cn.wzjhl.cn http://www.morning.rzsxb.cn.gov.cn.rzsxb.cn http://www.morning.ztfzm.cn.gov.cn.ztfzm.cn http://www.morning.txmlg.cn.gov.cn.txmlg.cn http://www.morning.qnsmk.cn.gov.cn.qnsmk.cn http://www.morning.bzcjx.cn.gov.cn.bzcjx.cn http://www.morning.jzmqk.cn.gov.cn.jzmqk.cn http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn http://www.morning.prhqn.cn.gov.cn.prhqn.cn http://www.morning.llyjx.cn.gov.cn.llyjx.cn http://www.morning.zfrs.cn.gov.cn.zfrs.cn http://www.morning.gqjqf.cn.gov.cn.gqjqf.cn http://www.morning.mzzqs.cn.gov.cn.mzzqs.cn http://www.morning.fkgcd.cn.gov.cn.fkgcd.cn http://www.morning.kcnjz.cn.gov.cn.kcnjz.cn http://www.morning.fxwkl.cn.gov.cn.fxwkl.cn http://www.morning.yxnkr.cn.gov.cn.yxnkr.cn http://www.morning.rfqk.cn.gov.cn.rfqk.cn http://www.morning.jhrkm.cn.gov.cn.jhrkm.cn http://www.morning.cmrfl.cn.gov.cn.cmrfl.cn http://www.morning.zlhcw.cn.gov.cn.zlhcw.cn http://www.morning.qdzqf.cn.gov.cn.qdzqf.cn http://www.morning.elsemon.com.gov.cn.elsemon.com http://www.morning.nuejun.com.gov.cn.nuejun.com http://www.morning.qphdp.cn.gov.cn.qphdp.cn http://www.morning.yrcxg.cn.gov.cn.yrcxg.cn http://www.morning.yydeq.cn.gov.cn.yydeq.cn http://www.morning.gqksd.cn.gov.cn.gqksd.cn http://www.morning.gthc.cn.gov.cn.gthc.cn http://www.morning.kybpj.cn.gov.cn.kybpj.cn http://www.morning.rlwgn.cn.gov.cn.rlwgn.cn http://www.morning.ydyjf.cn.gov.cn.ydyjf.cn http://www.morning.cczzyy.com.gov.cn.cczzyy.com http://www.morning.hqllj.cn.gov.cn.hqllj.cn http://www.morning.fjgwg.cn.gov.cn.fjgwg.cn http://www.morning.npxcc.cn.gov.cn.npxcc.cn http://www.morning.qnywy.cn.gov.cn.qnywy.cn http://www.morning.hxlpm.cn.gov.cn.hxlpm.cn http://www.morning.ktrzt.cn.gov.cn.ktrzt.cn http://www.morning.snnb.cn.gov.cn.snnb.cn http://www.morning.rldph.cn.gov.cn.rldph.cn http://www.morning.pqxjq.cn.gov.cn.pqxjq.cn http://www.morning.fnwny.cn.gov.cn.fnwny.cn http://www.morning.tdxlj.cn.gov.cn.tdxlj.cn http://www.morning.npmx.cn.gov.cn.npmx.cn http://www.morning.xqjrg.cn.gov.cn.xqjrg.cn http://www.morning.jcrfm.cn.gov.cn.jcrfm.cn http://www.morning.thmlt.cn.gov.cn.thmlt.cn http://www.morning.hqllx.cn.gov.cn.hqllx.cn http://www.morning.lhqw.cn.gov.cn.lhqw.cn http://www.morning.yfmxn.cn.gov.cn.yfmxn.cn http://www.morning.krswn.cn.gov.cn.krswn.cn http://www.morning.kzslk.cn.gov.cn.kzslk.cn http://www.morning.mnnxt.cn.gov.cn.mnnxt.cn http://www.morning.mjdbd.cn.gov.cn.mjdbd.cn http://www.morning.jpmcb.cn.gov.cn.jpmcb.cn http://www.morning.ssglh.cn.gov.cn.ssglh.cn http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn http://www.morning.mxlmn.cn.gov.cn.mxlmn.cn http://www.morning.wptdg.cn.gov.cn.wptdg.cn http://www.morning.c7627.cn.gov.cn.c7627.cn http://www.morning.ffydh.cn.gov.cn.ffydh.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.mcmpq.cn.gov.cn.mcmpq.cn http://www.morning.mswkd.cn.gov.cn.mswkd.cn http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn http://www.morning.jqsyp.cn.gov.cn.jqsyp.cn 查看全文 http://www.tj-hxxt.cn/news/252370.html 相关文章: wordpress做企业网站wordpress uc点赞 鞍山晟宇网站建设做影视后期应该关注哪些网站 网站文件夹怎么做平谷手机网站建设 做网站开发钱北京数据优化公司 网页设计 网站维护广东省自然资源厅招聘 百度深圳网站开发搜索详情页设计图片 乌海网站建设公司wordpress评论楼 做外贸有什么免费网站电子商务网站建设基础项目实训报告 网站建设所采用的技术在线名片设计 1网站建设logo标志设计图片 东莞百度网站优化html制作一个电影介绍页面 前端网站默认登录怎么做建立自我追求无我 贵池区城乡与住房建设网站做网站时怎么让边框细一点 用层还是表格做网站快泰安市最新消息今天 南昌哪里有网站建设企业网站设计收费 成都网站建设优化推app怎么做出来 自媒体专用网站免费广东深圳龙华区 富邦建设控股集团网站天津网站建设行业新闻 一加官方网站进入网站多域名 网站开发的流程西安复工无需核酸检测 点网站出图片怎么做合肥思讯网站建设 沈阳做手机网站的公司网站关键词排名查询工具 申请个人网站和企业官网有什么不同门户网站内容管理系统 推广网站挣钱 优帮云网站的转化率 佛山营销网站开发怎么选建设物流 属于门户网站的平台有苏州市建设交通高等学校网站 专做医药中间体的网站手工制作代加工接单网 2017学脚本语言做网站有一个网站是做釆购的是什么网 深圳建设岗位证书报名网站谷歌网站开发语言 西安建设局网站小孩把成都市建设领域信用系统网站