首页 > 其他分享 >通过字节码解释b=i++和b=++i的区别(笔记)

通过字节码解释b=i++和b=++i的区别(笔记)

时间:2023-02-18 15:02:16浏览次数:31  
标签:10 操作数 字节 ++ 笔记 本地 istore 变量

public class Test {
/*
test1(): 针对后++
0: bipush 10 定义常量10
2: istore_1 将常量存储到本地变量表1的位置
3: iload_1 * 将本地变量表1位置的值压入操作数栈
4: iinc 1, 1 * 将本地变量表1位置的值自增1
7: istore_1 将操作数栈的值放入到本地变量表1的位置

test2(): 针对前++
0: bipush 10 定义常量10
2: istore_1 将常量存储到本地变量表1的位置
3: iinc 1, 1 * 将本地变量表1位置的值自增1
6: iload_1 * 将本地变量表1位置的值压入操作数栈
7: istore_1 将操作数栈的值放入到本地变量表1的位置

对于b=i++的复合运算,是将i的值先放入到操作数栈,再对i自增,最后将操作数栈的值返回给变量b
对于b=++i的复合运算,是将i先自增,再将i的值放入到操作数栈,最后将操作数栈的值返回给变量b
* */
public void test1() {
int i = 10;
i = i++;
System.out.println(i); //10
}
public void test2(){
int i = 10;
i = ++i;
System.out.println(i); //11
}
}

​通过字节码解释b=i++和b=++i的区别

标签:10,操作数,字节,++,笔记,本地,istore,变量
From: https://blog.51cto.com/gugu/6065426

相关文章

  • 联想低温锡-选笔记本时看到的
    联想这几年的操作让我看不懂,说的偏激点是对内价格强势,对外卑微,不过也是偏见,小新系列和thinkbook系列在家用和办公都取得了不错的成绩,我的x220至今仍在24小时运行跑轻量脚本......
  • Flutter笔记 - 事件分发
    事件处理流程Flutter事件处理流程主要分两步,为了聚焦核心流程,我们以用户触摸事件为例来说明:命中测试:当手指按下时,触发PointerDownEvent事件,按照深度优先遍历当前渲染......
  • c++ 11 lamda 如何实现 linq 中 先 where 再 select 的功能
    面向AI编程,回答如下:在C++11中,可以使用lambda表达式和算法库中的std::copy_if和std::transform算法来实现LINQ中先where再select的功能。具体来说,可以先使用......
  • 【学习笔记】Spring声明式事务
    Spring声明式事务事务的概念事务(Transaction),一般是指要做的或所做的事情。在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。例如:在关系数......
  • c++ 有类似 linq 的方便数据处理的技术吗?
    面向AI编程,回答如下:C++标准库中并没有像LINQ那样直接支持数据处理的语言集成查询技术,但是C++11标准引入了一些新的语言特性,例如lambda表达式和范围循环,可以使得数据处理更......
  • 周六900C++班级-2023.2.18-栈2
    栈练习2请写出使用stack头文件定义一个名称为q的整型栈_stack<int>q;_____设当前有栈q,元素x,请写出将元素x入栈push的程序q.push(x);设当前有栈q,元素x,请写出出栈pop的......
  • 如何在 C++ 应用程序中集成 Spire.XLS for C++
    Spire.XLSforC++ 是一个Excel库,供开发人员在任何类型的C++应用程序中操作Excel文档(XLS、XLSX、XLSB和XLSM)。本文演示了如何以两种不同的方式将Spire.XLSforC......
  • c++ 计算代码中两个点的毫秒差
    #include<chrono>intmain(){autot1=std::chrono::high_resolution_clock::now();//获取第一个时间点//这里放需要计时的代码autot2=std::ch......
  • 阅读笔记——架构漫谈
    这学期学习了软件体系结构这门课,想要做出好的软件,就需要在制作过程中对整个软件系统进行设计,引入软件架构的概念,为此阅读了王概凯的架构漫谈,得出了以下体会。上个......
  • 官方文档阅读笔记(二)2.安装 Djnago
    前提条件安装Python而且Python自带轻量级数据库SQLite。设置数据库也可以不设置默认使用SQLitePostgreSQL。你也可以使用MariaDB、MySQL或者Oracle......