重点:
1,i++,先是i进行自增,然后返回自增之前的值。
2,++i,先是i进行自增,然后返回自增之后的值。
例子1
int i = 0;
i = i++;
System.out.println("i = " + i);
返回值输出:
例子2
int i = 0;
i = ++i;
System.out.println("i = " + i);
返回值输出:
强化理解:
//样例1
int a = 2;
int b = (3 * a++) + a;
System.out.println(b);
//样例2
int a = 2;
int b = a + (3 * a++);
System.out.println(b);
返回值输出:
样例1
根据开始1的原理,(3 * a++)+a 可以转换为 (3 * 2)+3 , 记住,a++返回的是自增之前的值,但是a是已经发生了自增现象的。
样例2
根据开始1的原理,(3 * a++)+a 可以转换为 a+(3 * 2) , ,那么a是多少呢, 遵从代码的从左往右执行的原则,那么a起始是2的, a=2, 2(3*2)=8,这就是输出结果,但你要记住a在a++之后是等于3的。
i++的源码分析:
int temp = i;
i = i + 1;
return temp;
++i的源码分析:
int i = 0;
i = ++i;
1,i++,先是i进行自增,然后返回自增之前的值。
2,++i,先是i进行自增,然后返回自增之后的值。