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

个人网站做贷款广告信阳百度推广公司电话

个人网站做贷款广告,信阳百度推广公司电话,香港新冠肺炎疫情最新消息,网站开发学习问题背景 安卓开发过程中,经常要通过看一些java代码对应的字节码,来了解java代码编译后的运行机制,本文将通过一个简单的demo介绍一些基本的字节码指令。 问题分析 比如以下代码: public class test {public static void main…

问题背景

安卓开发过程中,经常要通过看一些java代码对应的字节码,来了解java代码编译后的运行机制,本文将通过一个简单的demo介绍一些基本的字节码指令。

问题分析

比如以下代码:

public class test {public static void main(String[] args) {int a = 100;int b = 100;int c = 100;a += b + c;System.out.println(a);}
}

运行结果如下:
运行结果

a += b + c <==> a += (b + c),查看对应的字节码文件如下:

// class version 52.0 (52)
// access flags 0x21
public class test {// compiled from: test.java// access flags 0x1public <init>()VL0LINENUMBER 1 L0ALOAD 0INVOKESPECIAL java/lang/Object.<init> ()VRETURNL1LOCALVARIABLE this Ltest; L0 L1 0MAXSTACK = 1MAXLOCALS = 1// access flags 0x9public static main([Ljava/lang/String;)VL0LINENUMBER 3 L0BIPUSH 100ISTORE 1 // 将100存储到局部变量L1LINENUMBER 4 L1BIPUSH 100ISTORE 2 // 将100存储到局部变量L2LINENUMBER 5 L2BIPUSH 100ISTORE 3 // 将100存储到局部变量L3LINENUMBER 6 L3ILOAD 1 // 从局部变量表中加载 int 类型到操作数栈ILOAD 2 // 从局部变量表中加载 int 类型到操作数栈ILOAD 3 // 从局部变量表中加载 int 类型到操作数栈IADD // 将栈顶两个 int 类型数值相加IADD // 将栈顶两个 int 类型数值相加ISTORE 1 // 将 int 类型存储到局部变量中,这里就是把结果存储到第一个变量L4LINENUMBER 7 L4GETSTATIC java/lang/System.out : Ljava/io/PrintStream;ILOAD 1INVOKEVIRTUAL java/io/PrintStream.println (I)VL5LINENUMBER 8 L5RETURNL6LOCALVARIABLE args [Ljava/lang/String; L0 L6 0LOCALVARIABLE a I L1 L6 1LOCALVARIABLE b I L2 L6 2LOCALVARIABLE c I L3 L6 3MAXSTACK = 3MAXLOCALS = 4
}

问题总结

通过查看java代码对应的字节码,可以比较清楚的看到java代码编译后的执行流程。在安卓开发中,了解字节码知识还是非常有必要的,在关键时刻,我们查看字节码,能够很好的解答一些疑惑,下面是常见的一些字节码指令:

1. 加载和存储指令:aload:从局部变量表中加载引用类型到操作数栈。astore:将引用类型存储到局部变量表中。iload:从局部变量表中加载 int 类型到操作数栈。istore:将 int 类型存储到局部变量表中。fload:从局部变量表中加载 float 类型到操作数栈。fstore:将 float 类型存储到局部变量表中。2. 算术和逻辑指令:iadd:将栈顶两个 int 类型数值相加。isub:将栈顶两个 int 类型数值相减。imul:将栈顶两个 int 类型数值相乘。idiv:将栈顶两个 int 类型数值相除。iand:将栈顶两个 int 类型数值进行按位与操作。ior:将栈顶两个 int 类型数值进行按位或操作。3. 类型转换指令:i2l:将 int 类型转换为 long 类型。l2i:将 long 类型转换为 int 类型。f2d:将 float 类型转换为 double 类型。d2i:将 double 类型转换为 int 类型。4. 控制流指令:if_icmpeq:如果两个 int 类型数值相等,则跳转到指定位置。goto:无条件跳转到指定位置。tableswitch:根据索引值跳转到不同位置的指令。5. 方法调用和返回指令:invokevirtual:调用实例方法。invokestatic:调用静态方法。invokeinterface:调用接口方法。ireturn:从方法中返回 int 类型值。invokedynamic: 运行时动态解析并绑定方法调用

持续更新,有兴趣的小伙伴可以进一步深入研究。

http://www.zhongyajixie.com/news/24951.html

相关文章:

  • wordpress 自定义首页seo用什么论坛引流
  • 天津网站建设zhy88网络营销模式有哪些?
  • php网站如何做特效360优化大师旧版
  • 鞍山网站制作一般多少钱seo网站优化培
  • 大数据做网站网络科技公司
  • 采购找供应商网站南宁百度seo排名
  • 网站顶部小图标怎么做哈尔滨优化调整人员流动管理
  • wordpress 强制登录百度seo快速见效方法
  • 网站像素大小抖音seo教程
  • 网站建设地基本流程怎么百度推广
  • 网站前端设计与实现引流软件有哪些
  • html做网站在手机上显示搜索引擎优化实训心得
  • 开淘宝网店的全流程seo最新优化技术
  • 长沙中小企业做网站企业产品网络推广
  • 有了网站域名如何做网站整合营销传播方案
  • 网站建设公司推广广告语友情网站
  • wordpress英文语言包seo网站排名的软件
  • 厦门网站建设哪家强免费行情软件网站下载
  • 一个主机放几个网站百度站长平台登录
  • 复制源码+做网站推广方案范例
  • wordpress网站站长工具app官方下载
  • 武汉网站seo技术厂家优化快速排序
  • p2p理财网站开发流程图企业官网推广
  • 浅谈电子商务网站建设与管理论文b站黄页推广软件
  • 简述网站开发的基本流程图肇庆seo优化
  • 宁夏网站建设费用地址简述网站内容如何优化
  • 对网站建设的问题品牌形象推广
  • 中国小康建设网是骗子网站吗?武汉seo排名优化公司
  • 重庆企业网站开发服务器洛阳搜索引擎优化
  • 网站设计的原则优化设计五年级下册语文答案