黑马程序员技术交流社区
标题:
一段没想明白运行结果的的程序
[打印本页]
作者:
qmlovewhr
时间:
2013-7-7 22:57
标题:
一段没想明白运行结果的的程序
本帖最后由 杨兴庭 于 2013-7-8 16:43 编辑
class wTest
{
public static void main(String[] args)
{
System.out.println(new wTest().test());
}
static int test()
{
int x=1;
try
{
return x;
}
finally
{
++x;
System.out.println(x);
System.out.println("aaa");
}
}
}
你能告诉我运行结果是什么吗?为什么会有这样的运行结果,求解释。
作者:
李江
时间:
2013-7-7 23:27
我是这样理解的:try....catch...finally...结构中,无论在try和catch中是否return,finally肯定是要执行的,也就是说,只有finally的内容执行完后函数才返回。因为执行顺序是
try catch finally 所以 return x 中x=1; 接着执行finally,x为2,打印,然后打印 aaa 最后返回x 为1,再打印,即结果为 2,aaa, 1
作者:
denghui1010
时间:
2013-7-7 23:33
return x;的时候,Test方法获得返回值1,但是调用还没有结束,必须要执行finally,所以输出2,aaa,之后Test方法调用结束,Test方法的返回值是1,new wTest().test()的值=1被输出,所以结果是
2
aaa
1
作者:
王靖远
时间:
2013-7-7 23:37
楼上正解。搞清楚finally在return之前执行就OK啦。不过如果try代码块中的内容是System.exit(0),那么就不会执行finally里面的语句了
作者:
哪颗最亮的星星
时间:
2013-7-7 23:39
结果是:
2
aaa
1
先执行完finally里的内容后,才返回x的值,这个x的值是对象的x .
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2