黑马程序员技术交流社区
标题:
return和finally 执行顺序的一点思考;
[打印本页]
作者:
Mokill0911
时间:
2014-8-27 02:12
标题:
return和finally 执行顺序的一点思考;
本帖最后由 Mokill0911 于 2014-8-27 02:35 编辑
发现交了辞呈之后心情不太好,所以拿基础测试题练练手稳定下情绪,然后发现了一些有趣的问题,贴出来大家分享~~~
测试题6、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行finally?
首先确信答案是先执行finally,然后这是我的代码:
public class Test6
{
public static void main(String[] args)
{
System.out.println(tempMethod());
}
public static String tempMethod()
{
try
{
return ("return in the try...");
}
catch( Exception e)
{}
finally
{
System.out.println( "this's finally...");
}
return ("End return...");
}
}
复制代码
执行结果:
this's finally...
return in the try...
但是我在论坛上有同学说应该是return先执行,
这是他 (报纸同学) 的帖子:
http://bbs.itheima.com/forum.php?mod=viewthread&tid=101722
是的,最开始我没仔细想,执行了一遍代码发现结果确实如他所说
然后我把他的代码进行了一些修改,发现实际情况应该是这样的~
class test6temp
{
public static void main(String[] args)
{
System.out.println("i= "+tempMesthod ());
}
public static int tempMesthod()
{
int i =1;
try
{
return ++i;
}
catch(Exception e)
{
}
finally
{
i= 5;
//我增加了这行代码 System.out.println(i);
}
return i;
}
}
复制代码
注释是我增加的代码,显然这位童鞋被JVM欺骗了;P
作者:
SmallRooker
时间:
2014-8-27 07:39
搜打死内 , 学习下。
作者:
潘多拉
时间:
2014-8-27 07:43
那到底是具体的执行过程是咋样的呢,能用文字总结一下不?
作者:
Mokill0911
时间:
2014-8-27 14:09
潘多拉 发表于 2014-8-27 07:43
那到底是具体的执行过程是咋样的呢,能用文字总结一下不?
你是问我的代码还是那位同学的代码?
其实都很简单的,因为我直接设定的是打印语句,所以你把代码复制到编译器里面,编译完运行看结果就一目了然了。
就是证明一下当try语句里有return语句的时候,如果下方还有finally的话会先执行哪一条。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2