本帖最后由 朴日男 于 2014-10-4 09:15 编辑
/*
* 6、 用代码证明,在try中写了return,后面又写了finally,是先执行return还是先执行fianlly?
*
* */
/*
* 输出结果:
try run
finally run
x=2
*
* 从test()结果看出,返回值是x=2;
* 因此执行顺序是:
* return拿到返回值(x=2)不返回先等待(x在内存里的什么地方呢???)
* -->执行finally的内容(x=5)(x在内存里的什么地方呢???)
* --> try里的return继续执行(x=2)(x存在哪里了?为什么没有被覆盖?)
*
* 总结:
* finally先执行,return后执行.
* 如果这么说,打印结果应该是 x=5啊
*
* return先执行,finally后执行.
* 如果这么说,那执行结果应该是
* try run
* x=2
* finally run
*
* 求助啊...最好从内存 方面解析讲解,跪谢...百度了下,也没看出所以然来,都是各说各的...2种结果都有
* 更迷糊了.
* */
class Test6
{
public static void main(String[] args)
{
System.out.println("x = "+test());
}
public static int test()
{
int x = 1;
try
{
System.out.println("try run");
x++;
return x;
} finally
{
x = 5;
System.out.println("finally run");
}
}
}
|