class Test {
public static void main(String[] args) {
System.out.println(new Test().test());;
}
static int test()
{
int x = 1;
try
{
System.out.println("try中的x:"+x);
return x;//当程序遇到return时,把 x=1装载到 return这辆车上。准备开走,但是要让finally先开走
}
finally
{
++x;// 可是finally把x改变了,(x=2,但是return那辆车上还是装x=1)finally执行完内存里面的值改变,返回的值不变
System.out.println("finally中的x:"+x);//x=2
}
}
}
总结:finally先于return执行,但是return返回的是finally执行之前的值。我觉得用上面的小例子比较容易理解。 |