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

开源企业网站系统php网络公司 给 客户网站备案

开源企业网站系统php,网络公司 给 客户网站备案,wordpress 主题 模板,吉林省建设监理检测网站字节码篇 Java虚拟机的生命周期 JVM的组成 Java虚拟机的体系结构 什么是Java虚拟机 虚拟机#xff1a;指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 #xff0c;是物理机的软件实现。常用的虚拟机有VMWare#xff0c;Visual Box…字节码篇 Java虚拟机的生命周期 JVM的组成 Java虚拟机的体系结构 什么是Java虚拟机 虚拟机指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 是物理机的软件实现。常用的虚拟机有VMWareVisual BoxJava Virtual MachineJava虚拟机简称JVMclass文件结构概述 知道字节码吗字节码都有哪些 1. 加载和存储指令Load and Store Instructions 这些指令用于从操作数栈或者局部变量表加载数据或者将数据存储到局部变量表中。加载指令将局部变量表中的数据加载到操作数栈。iload, aload, fload, dload, lload将局部变量表中的基本类型如 int、Object 等加载到操作数栈。 iload_index, aload_index, fload_index 等将局部变量表的某个索引处的数据加载到栈中如 iload_0 加载局部变量表中索引为 0 的 int 类型数据。 存储指令将操作数栈中的数据存储到局部变量表中。istore, astore, fstore, dstore, lstore将栈顶的数据存储到局部变量表中。 istore_index, astore_index, fstore_index 等将操作数栈的值存储到局部变量表的某个索引。2. 运算指令Arithmetic and Logical Instructions 这些指令执行基本的数学运算或逻辑运算。算术运算iadd, isub, imul, idiv, irem对 int 类型数据进行加法、减法、乘法、除法和取余。 fadd, fsub, fmul, fdiv, frem对 float 类型数据进行相应的运算。 dadd, dsub, dmul, ddiv, drem对 double 类型数据进行运算。 ladd, lsub, lmul, ldiv, lrem对 long 类型数据进行运算。 逻辑运算iand, ior, ixor对 int 类型数据执行按位与、或、异或操作。 land, lor, lxor对 long 类型数据执行按位与、或、异或操作。3. 控制流指令Control Flow Instructions 这些指令用于改变程序的执行流程包括条件跳转、循环控制等。条件跳转指令ifeq, ifne, iflt, ifge, ifgt, ifle根据栈顶数据进行条件判断例如如果 int 值等于 0则跳转。 if_icmpeq, if_icmpne, if_icmplt, if_icmpge, if_icmpgt, if_icmple比较栈顶的两个 int 类型的值根据比较结果跳转。 无条件跳转goto无条件跳转到指定的字节码地址。 jsr, ret用于子程序调用和返回jsr 和 ret 已经被标记为废弃不再常用。 返回指令return从当前方法返回。 ireturn, lreturn, freturn, dreturn, areturn返回不同类型的方法的结果。4. 对象操作指令Object Manipulation Instructions 这些指令用于对象的创建、字段访问、方法调用等操作。对象创建new创建一个新的对象例如 new 操作符。 newarray, anewarray, multianewarray创建不同类型的数组。 字段操作getstatic, putstatic: 获取或设置类的静态字段。 getfield, putfield: 获取或设置实例字段。 方法调用invokevirtual, invokespecial, invokestatic, invokeinterface调用实例方法、构造方法、静态方法或接口方法。 对象方法和字段instanceof检查对象是否是某个类型的实例。 checkcast强制类型转换。5. 堆栈操作指令Stack Manipulation Instructions 这些指令用于操作操作数栈上的数据。操作数栈数据压栈和弹栈 pop, pop2: 弹出操作数栈顶的数据。 dup, dup2: 复制栈顶的元素。 swap: 交换操作数栈的前两个元素。6. 类型转换指令Type Conversion Instructions 这些指令用于不同类型之间的转换。类型转换 i2b, i2c, i2s将 int 类型转换为 byte、char、short。 l2i, f2i, d2i将 long、float、double 转换为 int 类型。 f2l, d2l将 float 和 double 转换为 long 类型。 f2d, i2d, l2d将 float、int 和 long 转换为 double 类型。7. 异常处理指令Exception Handling Instructions 这些指令用于异常处理的控制流。异常跳转athrow抛出异常。 异常表try, catch, finally 结构通过在字节码中记录异常处理表实现。8. 常量池指令Constant Pool Instructions 这些指令用于访问常量池中的常量。常量池操作 ldc, ldc_w, ldc2_w将常量池中的常量加载到栈中。9. 其他指令 这些指令提供了对 Java 字节码虚拟机执行的低级控制。监视器指令 monitorenter, monitorexit用于实现同步锁定和释放锁。Java虚拟机中数据类型可以分为哪几类 int a 1;JVM如何取得a的值 Integer x 5;int y 5;比较 x y 都经过哪些步骤 源代码 Integer x 5; int y 5; boolean result (x y); // 这里比较 Integer 和 intJava 类型和自动拆箱 x 是一个 Integer 类型对象而 y 是一个原始的 int 类型。 在 x y 的比较中x 是一个对象y 是一个基本类型int。Java 会进行 自动拆箱将 Integer 对象 x 拆箱成 int 类型然后进行基本类型的比较。 自动拆箱的过程是通过 Integer 的 intValue() 方法完成的因此 x.intValue() 会将 Integer 对象 x 中的值提取为 int 类型然后与 y 进行比较。 编译后的字节码 假设这段代码已经被编译成字节码我们可以查看相应的字节码操作。 字节码指令假设以下字节码来自于 x y 比较的实现 0: iconst_5 // 将字面量 5 压入操作数栈 1: invokestatic #2 // 调用 Integer.valueOf(5)返回 Integer 对象压入操作数栈 4: astore_1 // 将 Integer 对象存储到局部变量表的索引 1x 5: iconst_5 // 将字面量 5 压入操作数栈 6: istore_2 // 将 5 存储到局部变量表的索引 2y 7: aload_1 // 将 xInteger 对象加载到操作数栈 8: invokevirtual #3 // 调用 Integer.intValue() 获取 x 的 int 值 11: iload_2 // 加载局部变量 y基本类型 int 12: if_icmpeq 17 // 比较两个 int 值是否相等如果相等跳转到 17 15: iconst_0 // 压入 0表示 false 16: goto 18 // 跳转到 18 处 17: iconst_1 // 压入 1表示 true 18: istore_3 // 将比较结果存储到局部变量表的索引 3result字节码分析 iconst_5将字面量 5 压入操作数栈。这是因为 x 5 和 y 5 都是常量 5。 invokestatic #2调用 Integer.valueOf(5)将常量 5 转换成 Integer 对象并将 Integer 对象压入操作数栈。 astore_1将 Integer 对象即 x存储到局部变量表的索引 1 位置。 istore_2将常量 5 存储到局部变量表的索引 2 位置即 y。 aload_1将 xInteger 对象从局部变量表加载到操作数栈。 invokevirtual #3调用 Integer.intValue() 方法将 Integer 对象 x 拆箱成基本类型 int并将拆箱后的值压入操作数栈。 iload_2将 y基本类型 int从局部变量表加载到操作数栈。 if_icmpeq 17比较栈顶的两个 int 值是否相等。如果相等跳转到 17即跳过 iconst_0表示比较结果为 true。 iconst_0如果 x.intValue() 和 y 不相等压入 0表示 false。 goto 18跳转到字节码指令 18表示结束。 iconst_1如果 x.intValue() 和 y 相等压入 1表示 true。 istore_3将比较结果存储到局部变量表的索引 3result。拆箱过程 拆箱是 Java 中的自动过程在 x y 比较中x 是 Integer 类型y 是 int 类型。JVM 会自动调用 Integer 对象的 intValue() 方法提取 Integer 中的 int 值然后将其与 y 进行比较。 x.intValue() 等价于 x 的 int 值即 5。 x y 等价于 x.intValue() y即 5 5。结果 如果 x 和 y 的值相等x.intValue() y 会返回 true字节码会执行 iconst_1最终将 true 存储在 result 中。 如果 x 和 y 的值不相等字节码会执行 iconst_0最终将 false 存储在 result 中。总结 在字节码层面Integer 对象会通过 intValue() 方法拆箱为 int然后与 int 类型的变量 y 进行比较。 字节码通过 invokevirtual 调用 Integer.intValue() 方法来实现拆箱。 比较操作会根据值的相等性进行跳转最终将比较结果true 或 false存储到局部变量表中。 JVM 处理这类操作时通过类型转换和方法调用来确保正确的类型比较和结果。 1.包装类的缓存 FLoat Double 无 2.复习intern()字符串 (常量池位置的迁移jdk版本) String snew String(“a”); s.intern(); String s2“a”; System.out.println(s s2);//false String s3new String(“a”)new String(“a”); s3.intern(); String s4“aa”; System.out.println(s3 s4);;//true 3.String snew String(“a”);几个对象 2
http://www.hkea.cn/news/14324213/

相关文章:

  • 自已如何建网站wordpress的模板文件
  • 安联建设集团股份公司网站青岛做网站建设的公司哪家好
  • 奉贤免费网站建设建设网站的特色
  • directadmin备份网站四川外国语大学网站建设系
  • 专业建设外贸网站制作江门公众号怎么制作模版
  • 手机宣传网站html网页设计代码范例
  • 成品网站和模板建站如何查看网站有没有收录
  • 网站新闻专题怎么做软件定制开发软件开发
  • 司法局网站开发方案亦庄网站建设公司
  • 数据库网站建设多少钱站长交流平台
  • 如何查看网站ftp地址潍坊关键词优化排名
  • 怎么做html网站清洁海绵的网站怎么做
  • 北京制作网站主页怎么把自己写的网页生成网址
  • 在国外做盗版电影网站wordpress游客
  • 北海市做网站的公司如何提升顾客的体验和服务
  • 网站充值这么做企业微信开放平台api
  • 网站备案要幕布照yusi wordpress
  • 建设工程专业承包交易中心网站中国建筑网官网投诉查询
  • 网站可以在外地备案吗wordpress的官网
  • 做短租哪个网站好提升网站建设
  • 手机网站信任从哪里设置wordpress主题chuxia
  • 完整酒店网站开发wordpress链接失效
  • 沧州企业网站建设方案信阳网
  • 小广告网站企业网站开发费用
  • 杭州有哪些性价比高的网站建设服务商网站无法发送邮件wordpress
  • 大型门户网站建设方案烟台网站建设报价
  • 网站建设策平面设计网站推荐
  • 运营商做网站网站制作需要哪些软件
  • 潍坊网站开发高手wap是什么意思卡迪碧
  • phpcms v9企业网站模板:蓝色电子科技公司网站模板wordpress 头像旋转