今天看到 https://blog.csdn.net/weixin_39800144/article/details/80749123 和 https://blog.csdn.net/c15158032319/article/details/78209740 中提到关于 i++ 和 ++i 的区别。
自己理解尝试并记录如下。
1 public static void main(String[] args) { 2 int a = 0; 3 for (int i = 0; i < 99; i++) { 4 a = a++; 5 } 6 System.out.println("a=" + a); 7 8 int b = 0; 9 int c = 0; 10 for (int i = 0; i < 99; i++) { 11 c = b++; 12 } 13 System.out.println("b=" + b); 14 System.out.println("c=" + c); 15 }
运行结果:
a=0
b=99
c=98
猜想:
a = a++; 的执行过程也许分如下步骤(假设此时a=0):
1. 将a的值0寄存在一个地方,比如寄存在容器m中;
2. 将a自增,即a++,此时a的值为1;
3. 将容器m中的值0赋值给等式左边的a,即a=0。
同理,对于 c = b++; 步骤(假设此时b=0):
1. m = b = 0;
2. b++; (完成后b=1)
3. c = m = 0;
结论:
i++:寄存i的值 --> i自增 --> 将寄存的值赋予等号左边(如果有等号);
++i:i自增 --> 寄存自增后的i值 --> 将寄存的值赋予等号左边(如果有等号)。
浙公网安备 33010602011771号