字节码指令例子分析

2024-01-09

什么是字节码指令

字节码指令就是由一个字节长度的操作吗和操作数组成,有些只有操作码,没有操作数

例如:  bipush 10 第一个参数就是操作码,第二个是操作数

a++和i++有什么区别

 public static void main(String[] args) {
        int a=10;
        a++;
        System.out.println(a);
    }

在字节码中,都是一样的内容,所以没有区别

a=a++的返回值是多少

输出的结果为10

 public static void main(String[] args) {
        int a=10;
        a=a++;
        System.out.println(a);
    }

我们来看下字节码指令

局部变量表0的位置是this

bipush 10

就是把10 压入操作数栈

istore_1

就是把操作栈的数据10 放入局部变量表,索引为1的位置中,并且把操作数栈中的10,出栈

iload_1

就是把局部变量表索引位置为1的数据10,在放入到操作数栈中

iinc 1 by 1

就是把局部变量表 索引位置为1 的数据10 加1,变成11

istore_1

再次把操作栈的数据10,放入局部变量表,索引位置为1的地方,把11覆盖,变成10

并且操作数栈的数据10 出栈

iload_1

再次把局部变量表中索引位置为1的数据10 ,放入操作数栈

System.out 和PrintStream.println 结合使用

打印操作数栈的数据,也就是返回10

最后的return就是结束

a=++a的返回值是多少

是11

   public static void main(String[] args) {
        int a=10;
        a=++a;
        System.out.println(a);
    }

我们来分析下字节码指令

bipush 10

把数据10放入操作数栈中


istore_1

把操作数栈中的数据10,放入局部变量表索引位置为1的地方,并且把操作数栈的10,出栈


iinc 1 by 1

把局部变量表 索引位置为1的数据10,给他加1,变成11


iload_1

把局部变量表索引位置为1 的数据11,放入操作数栈中


istore_1

把操作数栈中的数据11,放入局部变量表 索引位置为1的地方,变成11,

并且操作数栈的数据11 出栈

iload_1

把局部变量表 索引位置为1的数据11,放入操作数栈中


System.out PrintStream.println 结合打印出操作数栈中的11 ,所以控制台返回的结果就是11

return 直接停止

a*=a++的值是多少

通过上面的字节码指令分析,可以得出打印的是100=10*10

public static void main(String[] args) {
        int a=10;
        //a*a++
        a*=a++;
        System.out.println(a);
    }

a*=++a的值是多少

结果是110=10*11

public static void main(String[] args) {
        int a=10;
        //a* ++a
        a*=++a;
        System.out.println(a);
    }

a=a*(a++)*(++a)的值是多少


10*10*(11+1)=10*10*12=100*12=1200  

打印的结果就是1200

   public static void main(String[] args) {
        int a=10;
        a=a*(a++)*(++a);
        System.out.println(a);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

字节码指令例子分析 的相关文章

随机推荐

  • 回车与换行的区别。CR、LF、CRLF的区别。\r \n \r\n

    1 先上结论 中文 英文 英文缩写 ASC 转义 ASC 值 系统 回车 Carriage Return CR r 13 MacIntosh 早期的Mac
  • 个体工商户年报申报流程(不要再花冤枉钱)

    个体工商户年报申报网址 https www gsxt gov cn index html 个体工商户年报一般在1月1日至6月30日报 根据相关法律规定 个体工商户应当于每年1月1日至6月30日 通过企业信用信息公示系统或者直接向负责其登记的
  • Linux中如何查看开启了哪些端口?

    在Linux中 端口是设备与外界通讯交流的出口 常用于指TCP IP协议中的端口 其按照端口号可以分为三类 分别是 公认端口 注册端口 动态端口 那么Linux中如何查看开启了哪些端口 以下是常用命令介绍 1 使用netstat命令 net
  • 【OpenCV学习笔记02】- 图像入门

    内容 这里介绍了图像处理的入门操作 你将学习如何读取图像 如何显示图像以及如何将其保存回去 你将学习以下功能 cv imread cv imshow cv imwrite 简单使用OpenCV 读取图像 使用 cv imread 函数读取图
  • rknn加载onnx时报错 GLIBC=2.29 no found librknnc.so

    rknn 中onnx转rknn在虚拟机中运行时发现报错 GLIBC 2 29 no found librknnc so 昨天还正常的 今天装了个ftp 和宝塔面板就出错了 我估计根据报错地址 找到了librknnc so文件 权限也给了77
  • Java毕业设计基于springboot企业车辆管理系统设计与实现

    一 项目介绍 随着时代在飞速进步 每个行业都在努力发展现在先进技术 通过这些先进的技术来提高自己的水平和优势 企业车辆管理系统当然不能排除在外 企业车辆管理系统是在实际应用和软件工程的开发原理之上 运用Java语言以及SpringBoot框
  • 全功能tgbot/Telegram机器人多功能有后台版源码

    全功能tgbot telegram机器人多功能有后台版源码 打包好的可以直接上手 trx兑换 闪兑 关键字监控 群管 usdt监控 余额查询 推广分享 等几乎常见的tg机器人功能都有
  • 期权怎么开户:期权开户免费吗,需要什么样的门槛?

    期权开户是免费的 只有交易才会产生费用 开通期权账户需要满足50万的资金 以及融资融券交易经验或者金融期货交易经验 当然也有免50万门槛的开户方式 下文为大家科普期权怎么开户啊 期权开户免费么 一般情况下 期权是可以通过在营业部网点进行开户
  • 深入浅出《Delta-Sigma Data Converters》(可下载)

    在数字信号处理领域 数据转换器是实现模拟与数字世界之间无缝转换的关键组件 而在这个子领域中 Delta Sigma Data Converter s 一书以其全面和深入的内容 为工程师 学者甚至爱好者们提供了一个极其宝贵的资源 今天将为大家
  • go cannot find package “github.com/gorilla/websocket“解读

    Go无法找到包 github com gorilla websocket 的解决方案 在Go开发过程中 我们经常会依赖第三方库来简化开发工作 而使用 go get 命令安装这些库时 有时候我们可能会遇到类似于以下错误的情况 plaintex
  • java.io.IOException: Broken pipe

    做1个接口 处理前端请求图片跨域的问题 由于前端拿图片的时候 有跨域问题 所以让后台先拿到图片 然后再写给前台 本来下面的代码没什么太大的问题 但是如果前台请求的图片一多 1个页面中有很多图片 有些请求就会报错 java io IOExce
  • 数据采集才是MES系统的核心内容

    一 数据采集在MES管理系统中的应用 1 设备数据采集 MES管理系统通过与生产设备的连接 可以实时采集设备运行状态 产量 质量等相关数据 这有助于企业及时掌握设备运行状况 优化设备资源配置 提高设备利用率 2 工艺数据采集 MES管理系统
  • Typecho 最新XC主题 去除域名授权全解密源码

    简介 Typecho 最新XC主题 去除域名授权全解密源码 这是一款多样式主题 首页支持六种主题样式 支持Pjax优化访问速度 多种单页 如友链 说说等 评论支持表情 自定义编辑器 支持其他样式功能 该主题功能性挺高 比较花里胡哨 感觉有一
  • Java毕业设计基于springboot汽车服务管理系统

    一 项目介绍 随着社会的发展 汽车服务的管理形势越来越严峻 越来越多的用户利用互联网获得信息 但汽车服务信息鱼龙混杂 信息真假难以辨别 为了方便用户更好的获得汽车服务信息 因此 设计一种安全高效的汽车服务管理系统极为重要 为设计一个安全便捷
  • 适用于任何公司的网络安全架构

    1 第一等级 基础级 优势 可防范基本有针对性的攻击 使攻击者难以在网络上推进 将生产环境与企业环境进行基本隔离 劣势 默认的企业网络应被视为潜在受损 普通员工的工作站以及管理员的工作站可能受到潜在威胁 因为它们在生产网络中具有基本和管理员
  • 【OCR】实战使用 - 如何提高识别文字的精准度?

    实战使用 如何提高文字识别的精准度 我们在平常使用OCR的时候 经常会出现文字识别不精准的情况 我们改如何提高文字识别的精度呢 以下是一些提高OCR Optical Character Recognition 光学字符识别 文字识别精准度的
  • CMAKE_MAKE_PROGRAM is not set 解读

    目录 CMAKE MAKE PROGRAM 未设置 错误原因 解决方案 示例1 GNU Make 示例2 Ninja CMakeLists txt 的结构 示例 CMakeLists txt 文件 总结 CMAKE MAKE PROGRAM
  • 【每日论文阅读】Do Perceptually Aligned Gradients Imply Robustness?

    近似人眼梯度 https icml cc virtual 2023 oral 25482 对抗性鲁棒分类器具有非鲁棒模型所没有的特征 感知对齐梯度 PAG 它们相对于 输入的梯度与人类的感知非常一致 一些研究已将 PAG 确定为稳健训练的副
  • 黑豹程序员-字符串中查找出重复的字符串

    Collections frequency codeList element 字符串element 在codeList集合中重复的次数 List
  • 字节码指令例子分析

    什么是字节码指令 字节码指令就是由一个字节长度的操作吗和操作数组成 有些只有操作码 没有操作数 例如 bipush 10 第一个参数就是操作码 第二个是操作数 a 和i 有什么区别 public static void main Strin