如何理解java中i++与++i的区别

i++

等价于

i = i + 1;

++i

等价于

i = i + 1;

两者的区别在于:执行顺序的不同。

打个比方:

a = i ++; 等价于 a = i; i = i + 1;

而:

a = ++ i; 等价于 i = i + 1; a = i;

这是初步理解。

更进一步

实际上的话,i++的执行大概是这样的[1]:

int temp = i;

i = i + 1;

return temp; 

也就是说,i++也是先自增,再把之前的值赋过去。

理解一下这段话:

int i = 0;

i  = i ++;

System.out.print(i);

答案是1还是0呢?

答案是0。

那么来推演一下:

初始化 i ,此时i的值0;

将i++赋值给i,i++中i先自增加,此时i的值为0 + 1 = 1;

但返回值是自增前的数,也就是0;

这个时候就相当于:

i = 0;

不管i现在是多少,最后走完这个赋值,都成了0;

实际上这一段就是用i=i++就是来绕的,理解成

i = 0;
x = i;
i = i + 1;
print(x);

就行了,输出的是那个i自增前的数。

循环

我们在循环中常见到:

for (int i = 0; i < 10; ++i) {
    //TO DO
}

循环条件的最后自增用的是++i而不是i++,为什么呢?

还是前面那个原理,i++加入了一个变量用来存自增前的数,咱做循环,循环个几千次几万次那每次循环都加个变量,加着加着机器的负载不就变大了,那性能也肯定低了。

所以大部分循环里自增用的都是++i

最后

总结一下:

i++ 即后加加,原理是:创建变量存旧值,自增,然后旧值

++i 即前加加,原理是:自增,返回自增之后的值

参考博客

[1]一看就懂的i++与++i详解【精选】一看就懂的i++和++i详解_++i和i++-CSDN博客 作者:Android_cai_niao

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值