java中return public static int test(){ int i=0; try{ return i++; }finally{ ++i; i=32; } }为什么这里输出的是0知道的大虾回答下。谢谢。高分奉上。就100分了。^_^不知道的、给建议的、打酱油的请不要回复。因为楼太高真不好找答案。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个也是每月都有的问题啊关键在于 return 语句并不是立即返回,它本质上将设置返回结果和执行返回过程是分开处理的:首先它做了一个动作,将待返回的数据存入返回变量中,有点类似于以前Basic中: 函数名 = i++;然后才是后续的计算和finally的执行。这里有个很好的扫盲Blog,一定去看看:http://www.ticmy.com/?p=56 书上有这么一句话:如果在try catch语句中,try中有return语句,则finally块中的语句先于return语句执行。楼主可能没读清这句的意思,这句是说在return之前,finally中的语句是先执行的,它执行完后才return;但是return的值是什么,这个值确是在执行finally语句前已经确定了,return的值不会因为finally中语句的执行而改变了。当在finally中有return语句的时候,楼主可以试试。这时返回的值又不一样了。 上面说了很多了,补充一点:return i++;i++先把变量i作用于return表达式,然后再计算i=i+1++i先计算i=i+1,然后再把计算结果i作用于return表达式所以i = 0;时,return i++;返回0,而return ++i;返回1。 不是的,是:ticmy(龙四) E-TextEditor文本编辑器正则匹配空白字符 有什么办法让程序绑定特定的电脑哦? java中的ItemEvent和ActionEvent冲突怎么解决? JAVA 网络编程 java应用程序向指定网址发送文件 数据库驱动,请大家帮忙看看 5的阶乘程序的编写 如何在java中使用汉字? 数据库连接向大侠们求救 线程怎么调试? 关于锁的可重入性的一个小问题,诸位大神给讲一下 关于线程中断的疑问。
首先它做了一个动作,将待返回的数据存入返回变量中,有点类似于以前Basic中:
函数名 = i++;
然后才是后续的计算和finally的执行。这里有个很好的扫盲Blog,一定去看看:
http://www.ticmy.com/?p=56
如果在try catch语句中,try中有return语句,则finally块中的语句先于return语句执行。
楼主可能没读清这句的意思,这句是说在return之前,finally中的语句是先执行的,它执行完后才return;但是return的值是什么,这个值确是在执行finally语句前已经确定了,return的值不会因为finally中语句的执行而改变了。当在finally中有return语句的时候,楼主可以试试。这时返回的值又不一样了。
++i先计算i=i+1,然后再把计算结果i作用于return表达式
所以i = 0;时,return i++;返回0,而return ++i;返回1。
不是的,是:ticmy(龙四)