【java学习】一个关于return和finally的例子
2016-09-10 12:13
246 查看
这是我在看到的一道java面试题
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
首先,finally语句一定会被执行,但是对于return先执行还是finally先执行还是写段代码验证下比较好!
运行结果如下图:
运行结果第一行表示执行了return语句,然后执行finally语句,而且finally语句对与要返回的值没有任何影响(仍然是1),但是现在还有最后一个问题,既然先执行了return语句,那么为什么main方法最后打印返回值呢?以下是我个人的理解:
最后打印返回值是因为test()方法没有执行完,一般的方法执行了return代码后就结束了,但是也有例外,即有finally代码块的方法,在返回之后,还必须执行fianlly中的代码,就相当于我送你一件礼物,它确实已经是你的了,但是你必须听我说完我的请求,不然你甭想溜!
总结一下:finally语句会执行,并且在return语句之后,方法结束之前执行。
下面简易的示意图:
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语句之后,方法结束之前执行。
下面简易的示意图:
相关文章推荐
- Java面试里关于try,catch,finally,return容易犯错的一个问题
- 关于java clone的一个例子
- Java中关于Return和finally的执行问题
- 关于java读文件计算一个方法执行时间的程序的学习
- 通过一个例子学习java的参数传递
- 关于java中的try-catch-finally语句和return
- 转载一个关于java try and finally 很强的讨论
- 自制简单的Java下载器——来自《Java高级编程》的一个关于线程的例子(带上部分注释)
- Android学习札记36:一个关于onSaveInstanceState ()方法的例子
- 自制简单的Java下载器——来自《Java高级编程》的一个关于线程的例子(带上部分注释)
- Java关于文件上传的一个例子
- Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
- 关于MSSQL存储过程中使用游标的一个小例子(学习)
- 关于Java的RMI编程的一个简单的例子
- java多态性中关于private的一个例子
- 关于finally是在return前还是后执行的一个测试
- 一个JAVA读写文件的例子,主要是熟悉对 4000 字符流的应用(自己学习用)
- 关于JAVA匿名内部类我的理解,举一个小例子阐述。
- 关于java中的try-catch-finally语句和return
- 关于java中的try-catch-finally语句和return