当前位置: 代码迷 >> J2SE >> sun 公司2006年的一道面试题:下面程序运行结果是多少?该怎么解决
  详细解决方案

sun 公司2006年的一道面试题:下面程序运行结果是多少?该怎么解决

热度:104   发布时间:2016-04-24 01:17:28.0
sun 公司2006年的一道面试题:下面程序运行结果是多少?
sun 公司2006年的一道面试题:下面程序运行结果是多少?

public class Inc{

public static void main(String args[]){
  Inc inc=new Inc();
  int i=0;
  inc.fermin(i);
  i=i++;
  System.out.println(i);
}
 void fermin(int i){
  i++;
}
}
答案:0
因为java方法调用是传真调用,故执行完inc.fermin(i)后,i依然为0,但执行i=i++;即先把i的值赋给i,之后再执行自加,应该是0赋给了i,再自己为1。但通过实际运行也确实结果如答案所说为0.求解释!!

------解决方案--------------------
用javap反编译可以看到:
i=i++对应于
10: iload_2 ;将i的值0加载到操作数栈
11: iinc 2, 1
14: istore_2 ;将栈中的值0储存到局部变量i