java i++和 ++i
程序员文章站
2022-07-05 21:31:03
cmd class 转 汇编语言D:\jd\work-jd\interview\target\classes\com\interview\demo\test>javap -v AddAdd.class > AddAdd.txt // 把class 转成 汇编 代码D:\jd\work-jd\interview\target\classes\com\interview\demo\test>dir // 查看当前 目录下的文件D:\jd\work-jd\interview\ta...
cmd class 转 汇编语言
D:\jd\work-jd\interview\target\classes\com\interview\demo\test>javap -v AddAdd.class > AddAdd.txt
// 把class 转成 汇编 代码
D:\jd\work-jd\interview\target\classes\com\interview\demo\test>dir
// 查看当前 目录下的文件
D:\jd\work-jd\interview\target\classes\com\interview\demo\test>type AddAdd.txt
// 查看 AddAdd.txt 文件内容
i++
// i++ 汇编语言
// 0: iconst_1 //将int类型的1压入栈
// 1: istore_1 //出栈一个变量放入局部变量表中下标为1的位置,下标为0的位置存放的是this指针,此时栈为空,
// 2: iload_1 //从局部变量表中取出下标为1(实际值此处为1)的变量压入操作数栈中
// 3: iinc 1, 1 //将局部变量表中下标为1的变量进行加1操作
// 6: istore_2 //出栈一个变量放入局部变量表中下标为2的位置,这一步没有对操作栈中的数进行操作,直接出栈到变量表中
// 7: getstatic #6 //去常量池中引用"#6"符号引用的类与方法 // Field java/lang/System.out:Ljava/io/PrintStream;
// 10: iload_2 //从局部变量表中取出下标为1(实际值此处为1)的变量压入操作数栈中
// 11: invokevirtual #7 //执行println方法 // Method java/io/PrintStream.println:(I)V
// 14: return
1:入线程栈 10
2:入局部变量栈 10
3:从局部变量取出10 压入 操作栈
4:在操作栈中执行 ++
5:入局部变量栈
++i
// ++i 汇编语言
// 0: iconst_1 //将int类型的1压入栈
// 1: istore_1 //出栈一个变量放入局部变量表中下标为1的位置,下标为0的位置存放的是this指针,此时栈为空,
// 2: iinc 1, 1 //将局部变量表中下标为1的变量进行加1操作
// 5: iload_1 //从局部变量表中取出下标为1(实际值此处为2)的变量压入操作数栈中
// 6: istore_2 //出栈一个变量放入局部变量表中下标为2的位置,(实际值此处为2)
// 7: getstatic #6 //去常量池中引用"#6"符号引用的类与方法 // Field java/lang/System.out:Ljava/io/PrintStream;
// 10: iload_2 //从局部变量表中取出下标为1(实际值此处为2)的变量压入操作数栈中
// 11: invokevirtual #7 //执行println方法 // Method java/io/PrintStream.println:(I)V
// 14: return
1:入栈 10
2:入局部变量栈 10
3:操作局部变量栈的10 ++
4:从局部变量栈中取出压入操作栈
本文地址:https://blog.csdn.net/u014046124/article/details/110824277
推荐阅读
-
Intel(英特尔)酷睿i5 2520M和Intel 酷睿i5 2450M这两个哪个更好
-
i9 7900X和R7 1800X哪个好 i9-7900X与R7-1800X区别对比简单测评
-
酷睿i7 3770和酷睿i7 3770K两个哪个更好
-
Intel(英特尔)酷睿i5 2520M和Intel 酷睿i5 3450M哪个好 差距在哪里
-
深入分析Java I/O 工作机制
-
Java面向对象基础之多态性,抽象类和接口
-
详解JAVA中接口的定义和接口的实现
-
Notepad++怎么配置默认语言?notepad设置默认语言为c和Java语言的方法
-
华为freebuds4i和freebudspro哪款值得买 freebuds4i和freebudspro对比评测
-
在centos7下安装和部署java8和mysql