黑马程序员技术交流社区

标题: java中i=i+1 i+=1 和 i++之效率理解,求大神们讨论。 [打印本页]

作者: 胡建彪    时间: 2012-10-24 17:13
标题: java中i=i+1 i+=1 和 i++之效率理解,求大神们讨论。
(1) i = i + 1 它的效率最低,因为其执行过程如下:
1-1 读取右x的地址;
1-2 x + 1;
1-3 读取左x的地址;
1-4 将右值传给左边的x


(2) i += 1; 他的执行过程是:
2-1 读取右x的地址;
2-2 x + 1;
2-3 将得到的值传给x


(3) i++; 他的执行过程是:
3-1 读取右x的地址;
3-2 x自增1;

总结:
++i 最快
i++ 次之,比++i多用一个临时变量
i += 1 第三,需要取地址
i = i + 1 最后,并多用一个临时变量
理论上是这样的 不知道对不对 有待验证…..


作者: 刘岩喜    时间: 2012-10-24 17:40
这涉及汇编了,为了考试我苦学了半个月,菜的不行。。。
作者: 刘岩喜    时间: 2012-10-24 17:59
我查看了下资料,可以用javap -c Test.class 命令看一下字节码,肯定能得到答案的,希望对你有帮助
靠别人不如靠自己,哈哈,共同研究
字节码含义:http://jarg.iteye.com/blog/1011736
javap命令用法:http://chenhua-1984.iteye.com/blog/423389
作者: 给生活加点料    时间: 2012-10-24 18:30
i=i+1  肯定最慢。因为涉及到了运算
i+=1;这会直接赋值  所以比前者稍微快点。
至于 i++  和++i 谁的效率高,我也就不清楚了。同求解




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2