Java中i++和++i

韩顺平老师在B站的视频中有一道题,题目是这样的

int i=1;
i=i++;
System.out.println(i);

问结果是多少,为什么

我刚开始一直以为结果是2,后来老师说结果是1,我听他讲没听明白,编译器调试的时候也没有很明确的解释,我就搜了一下,下面是我总结的结论。

  1. 结论一:因为java采取了中间变量缓存机制。

    在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是++i,就会“先自加1后赋值(给临时变量)” ;如果是i++,就会“先赋值(给临时变量)后自加1” 。运算最终使用的,并非变量本身,而是被赋了值的临时变量。

  2. 结论2(直接记结论太长不看版):把整个表达式看作是一个整体

                            若变量名在前(i++),那么整个表达式的值就是原值不变
    
                            若变量名在后(++i),那么整个表达式的值就是原值+1
    

参考资料:1.韩顺平老师视频:https://www.bilibili.com/video/BV1fh411y7R8?p=65&t=197.7

2.https://blog.csdn.net/ffanfanm/article/details/12784489

3.https://blog.csdn.net/oZuoQi12345678910/article/details/42645561

4.https://blog.csdn.net/FRMNZR/article/details/100564754

posted @ 2021-11-06 17:52  Lem0ke  阅读(351)  评论(0)    收藏  举报