int j=0;int u=0;
for(int i=0;i<100;i++)
{u=j++;}
system.out.println(u);
int j=0;
for(int i=0;i<100;i++)
{j=j++;}
system.out.println(j);
for(int i=0;i<100;i++)
{u=j++;}
system.out.println(u);
int j=0;
for(int i=0;i<100;i++)
{j=j++;}
system.out.println(j);
在上面看下3L的
因为j = j++;是先将j的值(0)存入堆栈,然后对变量区中的j自加1,这时j的值的确是1,但是随后又将堆栈的值(0)弹出赋给变量区的j,所以最后j = 0。
又因为j = ++j;是先对变量区中的j自加1,然后再将变量区中j的值(1)存入堆栈,最后就是将堆栈中的值(1)弹出赋给变量区的j,所以j = ++j;的结果是j = 1。
其实是j=0先赋值给本身,然后再进行自增操作。
第二次的时候,由于上次赋值给j的值是0,所以等于重复第一次的操作。
到最后到时候仍然还是0。
如果该成是j = ++j;
那么是j先进行自增操作,再进行赋值给本身,那么第一次后j的值为1
以后每次自增1,循环100次,所以最后结果为100。
第二个的结果为99是因为有2个不同的对象。
循环100次,j自增到99,然后把自己的值赋给u,所以u为99