关于Java的i++和++i的区别
之前对于 i++ 和 ++i 的理解就是:
int i=1,a=0; 1、i++ 先运算在赋值,例如 a=i++,先运算a=i,后运算i=i+1,所以结果是a==1 2、++i 先赋值在运算,例如 a=++i,先运算i=i+1,后运算a=i,所以结果是a==2
直到今天遇到下面类似这道题:
public class Test3 { public static void main(String[] args) { int y=0; int i =0; y=++y; y=++y;
y=++y; System.out.println("y="+y); i=i++; i=i++; i=i++; System.out.println("i="+i); } }
结果:
y=3;
i=0;
解释:
/* i++,是先赋值,后加一,++i是先加一后赋值,三个y=++y,是y在内存自增一,然后进寄存器,最后赋值的时候i赋值就是1,第二个就是2,第三个就是3!
而三个i=i++, 是赋值之后再自增1,i=0这个值先进寄存器,然后i在内存自增1,最后赋值的时候寄存器出来的0值会冲掉1值成为最终结果,所以无论多少个结果都会是0。
*/