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

新手 请教一个简单问题
public class Person
{
   
  public static void main(String[] args)
  {
  int i=0;
  i=i++;
  System.out.println("i="+i);
  }
   
}
  输出i=0

------解决方案--------------------
1楼解释的有点问题,问题还是在 i=i++; 上。

主要问题是 i++ 表达式被运算时是先取得 i 的值,然后再运行++ 运算。

编译后执行的顺序是:
1、计算表达式(i++)的值,其实也就是:i,那么算出来就是 0 
2、执行:i++运算
3、因为右边表达式没内容了,所以右边最终的取值就是 0
3、执行赋值 i = 等号右边的值,那么也就是 0 了


楼主如果没搞懂的话,请把:
i=i++;
修改为:
i=i++ + i++;
结果是“1”,再想想应该就能理解了。