i = 3;
i = i++;
system.out.print(i);输出 
  i= 3;为什么?说明详细的内部原理.

解决方案 »

  1.   

    ++i和i++的区别:++i是 i+1 完成之后 i才参与运算,i++是i先参与运算,完了再i+1
    这里是i=i++,是 i参与运算之后再加1,所以结果就是3咯
      

  2.   

    这里当i++参与了其他运算的时候他是先临时把i的值拿出来在某个地方,先做自己的++运算,但是在和别的做运算的时候,他用的是那个临时保存的值去做运算的,所以这里i=i++可以看成是:
    int temp=i;
    i++;
    i=temp;
      

  3.   

    字节码说明一切,i=i++的字节码:
      2: iload_1
      3: iinc          1, 1
      6: istore_1
    第一行加载值,第二行执行自增,第三行将行一加载的值赋值给变量
      

  4.   

    对于java中的++i和i++要注意一下几点。
    情况一:你要明确以一点是不管是 ++i 还是 i++,最后结果对于i来说都是一样的,他的值都会加1。 例如:
             i=5;++i和i++ 这两个动作完成后i自身的值都变成6。 
     
    情况二: 对于他赋值给的那个变量就不一样了。 例如:
            i=5;  a = ++i,这句执行完后a = 6,当然i=6; 
            a = i++,这句执行完后a = 5,i=6; 
    对于你的例子而言,相当于情况二。理解的话对于i = i++你可以理解先赋值再++,所以你例子中system.out.print(i);输出的i相当于情况二中的a.