public static int test(){
int i=0;
try{
return i++;
}finally{
++i;
i=32;
}
}
为什么这里输出的是0知道的大虾回答下。谢谢。
高分奉上。就100分了。^_^不知道的、给建议的、打酱油的请不要回复。
因为楼太高真不好找答案。

解决方案 »

  1.   

    这个也是每月都有的问题啊关键在于 return 语句并不是立即返回,它本质上将设置返回结果和执行返回过程是分开处理的:
    首先它做了一个动作,将待返回的数据存入返回变量中,有点类似于以前Basic中:
      函数名 = i++;
    然后才是后续的计算和finally的执行。这里有个很好的扫盲Blog,一定去看看:
    http://www.ticmy.com/?p=56
      

  2.   

    书上有这么一句话:
    如果在try catch语句中,try中有return语句,则finally块中的语句先于return语句执行。
    楼主可能没读清这句的意思,这句是说在return之前,finally中的语句是先执行的,它执行完后才return;但是return的值是什么,这个值确是在执行finally语句前已经确定了,return的值不会因为finally中语句的执行而改变了。当在finally中有return语句的时候,楼主可以试试。这时返回的值又不一样了。
      

  3.   

    上面说了很多了,补充一点:return i++;i++先把变量i作用于return表达式,然后再计算i=i+1
    ++i先计算i=i+1,然后再把计算结果i作用于return表达式
    所以i = 0;时,return i++;返回0,而return ++i;返回1。
      

  4.   


    不是的,是:ticmy(龙四)