本帖最后由 袁见 于 2013-3-19 12:07 编辑
为了让你更好的理解可以通过下面一个例子程序来帮助我解释这个答案,
从下面例子的运行结果中可以发现,try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,
所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,
此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());;
}
int test()
{
try
{
return func1();
}
finally
{
return func2();
}
}
int func1()
{
System.out.println("func1");
return 1;
}
int func2()
{
System.out.println("func2");
return 2;
}
}
-----------执行结果----------------- func1 func2 2
希望对你有所帮助! |