从JVM的角度看JAVA代码1
来源:互联网 发布:小明看看地址永久域名 编辑:程序博客网 时间:2024/05/22 17:40
从JVM的角度看JAVA代码1
从JVM指令的角度来分析++,--问题可以分析的非常透彻,这里给出两个案例。通过这两个案例就能知道JAVA中前++和后++的原理了,同时也可以推论出--的情况。
public class JavaSampleAppend {public static void main(String []args) {int i = 1;i = (i++) + (++i);System.out.println(i);}}/* 0: iconst_1// 将int类型的常量值1推送到栈顶 1 1: istore_1// 将栈顶抛出的数据赋值给第2个slot所在的int类型的本地变量中 1 2: iload_1// 将第2个slot所在的int类型本地变量推送到栈顶 1 3: iinc 1, 1 // 将第2个slot所在的int类型的本地变量自加一2 6: iinc 1, 1 // 将第2个slot所在的int类型的本地变量自加一3 9: iload_1// 将第2个slot所在的int类型本地变量推送到栈顶 3 10: iadd// 将栈顶变量和第二个变量相加,然后将结果放回栈顶 4 11: istore_1// 将栈顶抛出的数据赋值给第2个slot所在的int类型的本地变量中 4// 也就是说输出为4 12: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream; 15: iload_1 16: invokevirtual #3; //Method java/io/PrintStream.println:(I)V 19: return*/
public class JavaSampleAppend {public static void main(String []args) {int i = 1;i = (i++) + (++i) + (i++);System.out.println(i);}}/*0: iconst_1 // 将int类型的常量值1推送到栈顶 11: istore_1 // 将栈顶抛出的数据赋值给第2个slot所在的int类型的本地变量中 12: iload_1 // 将第2个slot所在的int类型本地变量推送到栈顶 13: iinc 1, 1 // 将第2个slot所在的int类型的本地变量自加一26: iinc 1, 1 // 将第2个slot所在的int类型的本地变量自加一39: iload_1// 将第2个slot所在的int类型本地变量推送到栈顶 310: iadd // 将栈顶变量和第二个变量相加,然后将结果放回栈顶 411: iload_1 // 将第2个slot所在的int类型本地变量推送到栈顶 312: iinc 1, 1 // 将第2个slot所在的int类型的本地变量自加一415: iadd// 将栈顶变量和第二个变量相加,然后将结果放回栈顶 716: istore_1// 将栈顶抛出的数据赋值给第2个slot所在的int类型的本地变量中 7// 也就是说输出为717: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;20: iload_121: invokevirtual #3; //Method java/io/PrintStream.println:(I)V24: return*/
0 0
- 从JVM的角度看JAVA代码1
- 从JVM的角度看JAVA代码--代码优化
- 从JVM角度看Java多态
- 从编译器的角度看C代码
- 从JVM的角度看Spring的AOP
- 从C++角度看Java
- 从层次架构的角度看代码模板的通用性
- 从代码优化的角度看编程风格
- 从架构的角度看如何写好代码
- 从jvm的角度来看java的多线程
- 从jvm的角度来看java的多线程
- 从jvm的角度来看java的多线程
- 从jvm的角度来看java的多线程
- 从jvm的角度来看java的多线程
- 从jvm的角度来看java的多线程
- Java多线程同步如何从JVM的角度体会
- 从CMMI规范的角度看Java性能优化
- 从JDK源码角度看java并发的公平性
- Android Stutio 提示错误:Plugin is too old, please update to a more recent version......的解决办法
- C/C++学习笔记
- 形态学开操作与闭操作
- 人生如戏,切莫自欺欺人!
- 世纪末的星期
- 从JVM的角度看JAVA代码1
- Java第一次作业参考代码
- SharePoint 2013 指定位置增加路径导航(JQuery)
- Mysql命令大全
- 解决方案-Genymotion 首次安装登陆时出现generic unknown error
- cocos2dx 物理按键
- 邻接表(Java)
- 多态的实现:http://bbs.csdn.net/topics/370166353
- NGUI DrawCall优化