日期:2014-05-20  浏览次数:20715 次

自增的面试题
i = 3;
i = i++;
system.out.print(i);

输出 
  i= 3;

为什么?说明详细的内部原理.

------解决方案--------------------
++i和i++的区别:++i是 i+1 完成之后 i才参与运算,i++是i先参与运算,完了再i+1
这里是i=i++,是 i参与运算之后再加1,所以结果就是3咯
------解决方案--------------------
对于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.