public class Test
{
public static void main(String args[])
{
int b = t.get();
System.out.println(b);
}
public static int get()
{
try
{
return 1 ;
}
finally
{
return 2 ;
}
}
}
返回的结果是2。
try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行,所以,返回的结果是2。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
原理应该是,return 1先压栈,但程序比没有停止,继续finally块,而finally块中又压栈一次,所以最后弹出的是2。