Java中i++和++i
韩顺平老师在B站的视频中有一道题,题目是这样的
int i=1;
i=i++;
System.out.println(i);
问结果是多少,为什么
我刚开始一直以为结果是2,后来老师说结果是1,我听他讲没听明白,编译器调试的时候也没有很明确的解释,我就搜了一下,下面是我总结的结论。
-
结论一:因为java采取了中间变量缓存机制。
在java中,执行自增运算时,会为每一个自增操作分配一个临时变量,如果是++i,就会“先自加1后赋值(给临时变量)” ;如果是i++,就会“先赋值(给临时变量)后自加1” 。运算最终使用的,并非变量本身,而是被赋了值的临时变量。
-
结论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

浙公网安备 33010602011771号