通过实验总结:
这个机制是这样的---碰到try语句中的return,那么先把return的值放在某个池中,然后执行finally里面的代码块,
如果有返回值覆盖语句,就改变先前放在池中的那个值,如果没有,就把那个池中的东西取出来返回出去
class Test
{
public static void main(String[] args)
{
System.out.println(test());
}
public static int test()
{
int x = 10;
try
{
return x;
}
finally
{
//x+=2; //结果返回10---->没有return,不改变返回值
return x+=2; //结果返回12---->有return,执行覆盖
}
}
}
|