关于自增i++与++i的一些小区别
首先明确,“++”在前:先自增再赋值,“++”在后:先赋值再自增
对于下面代码
int i=100;
int a=i++;
i=100;
int b=++i;
System.out.println(a);
System.out.println(b);
i=100;
i=i++;
System.out.println(i);
输出结果为:
前两行代码很好理解
int i=100;
int a=i++;
//等价于
int a=i;
i=i+1;
int i=100;
int a=++i;
//等价于
i=i+1;
int a=i;
对于最后一段代码
i=100;
i=i++;
System.out.println(i);
//等价于
int tmp=i
i=i+1;
i=tmp;//所以无论执行多少次i++,i的值都是不变得
总结
int i=0
i=i++
//相当于
int temp = i
i++
i=temp
int i=0
int j= i++
//相当于
int temp = i
i++
j=temp
int i=0
i=++i
相当于
++i
temp = i
i=temp;
java编译器对于i++会先将i的值保存至另一变量 然后在对i++,另一变量仍没有改变。 而对于++i 是先对i++ 然后保存到另一变量 然后赋值。