下面小编就为大家带来一篇深入理解 java 中 i++ 和 ++i 的区别小编觉得挺不错的, 现在就分享给大家, 也给大家做个参考一起跟随小编过来看看吧
今天简单谈谈关于 java 的一个误区, 相信很多刚开始学习 java 的朋友都会遇到这个问题, 虽然问题很简单, 但是经常容易搞混, 说说 java 的 i++ 和 ++i 的区别
先看一下代码:
- <span style="font-size:18px;">public class test {
- public static void main(String[] args) {
- int i = 0;
- for (int j = 0; j < 10; j++) {
- i=i++;
- }
- System.out.println("i 的最后结果"+i);
- }
- }
- </span>
大家可以一眼看出结果, 结果是多少? 是 10 吗?
相信还是有不少朋友第一眼看去, 觉得答案是 10, 正确答案是: 0;
刚开始学习的 C,java 的时候, 老师都讲过自增形式: 即: i++ 和 ++i;
其实区别在于, i=i++ 是先赋值在自增, 所以无论循环多少次, 左边的 i 始终是 0, 最后结果就是 0. 改成 i=++i, 是可以达到效果的,++i 是先自增在赋值
可以这样理解, 看代码:
- <span style="font-size:18px;">public class test {
- public static void main(String[] args) {
- int i = 0;
- for (int j = 0; j < 10; j++) {
- i=i++;
- }
- System.out.println("i 的最后结果"+i);
- }
- public static int count(int i) {
- // TODO Auto-generated method stub
- // 选保存初始值, JVA 开辟的临时变量区
- int temp=i;
- // 做自增
- i = i++;
- // 返回原始值
- return temp;
- }
- }
- </span>
所以要达到自增就可以用 i=++i, 但是一般是直接用 i++, 这样更好; 这也算是 JAVA 的一个自增陷阱
来源: http://www.phperz.com/article/18/0225/359285.html