您的位置:首页 > 编程语言 > Java开发

【java学习】一个关于return和finally的例子

2016-09-10 12:13 246 查看
这是我在看到的一道java面试题

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

首先,finally语句一定会被执行,但是对于return先执行还是finally先执行还是写段代码验证下比较好!

public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new Test().test());
}
public int test() {
int x = 1;
try {
System.out.println("return x");//1
return x;
} finally {
// 2
System.out.println("finally");
x++;
System.out.println("x已经处理");
}
}
}


运行结果如下图:



运行结果第一行表示执行了return语句,然后执行finally语句,而且finally语句对与要返回的值没有任何影响(仍然是1),但是现在还有最后一个问题,既然先执行了return语句,那么为什么main方法最后打印返回值呢?以下是我个人的理解:

最后打印返回值是因为test()方法没有执行完,一般的方法执行了return代码后就结束了,但是也有例外,即有finally代码块的方法,在返回之后,还必须执行fianlly中的代码,就相当于我送你一件礼物,它确实已经是你的了,但是你必须听我说完我的请求,不然你甭想溜!

总结一下:finally语句会执行,并且在return语句之后,方法结束之前执行。

下面简易的示意图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: