参考链接:https://www.junhaow.com/2018/08/07/035 | 学习 i++ 和 ++i 的本质区别/
1、i++代码
static void test1() {
int j;
int i = 0;
for (j = 0; j <= 10; j++) {
i = i++;
}
System.out.println("累加后i的值是:" + i);
}
2、运行效果
3、++i代码
static void test2() {
int j;
int i = 0;
for (j = 0; j <= 10; j++) {
i = ++i;
}
System.out.println("累加后i的值是:" + i);
}
4、运行效果
5、总结
i=i++,先取i的值放到临时存储区中,再执行i+1,并把结果赋值给i,最后把临时存储区的值赋值i,此时i又变成原理的值,所以for循环结束后,i还是原来的值,不能达到累加的效果;而i=++i,执行i+1并把结果赋值给i,所以i的值就是累加之后的值。这里只是简单总结,更详细的的总结可以结合javap命令查看编译后的字节码以及jvm的内存结构来分析具体底层原理。