Posted on 2007-10-23 17:34
D主 阅读(272)
评论(0) 编辑 收藏 引用 所属分类:
Java Related
最近研究Java,发现很多有趣的事情。今天又是一例。
先看代码(注意第5行和第8行的两个”return”)
- public class TestClass{
- public int test(){
- try{
- System.out.println("step1");
- return 1;
- }finally{
- System.out.println("step2");//会执行吗?
- return 2;
- }
- }
- public static void main(String[] args){
- TestClass te=new TestClass();
- int t=te.test();
- System.out.println(t);
- }
- }
按理说,一个方法执行到return就应该返回,但是按照Java的规范,finally中的代码又是一定要被执行的。
先看看上面这个程序的运行结果:
可以看到,虽然在try块中遇到了return,但finally中的代码仍然被执行了。test()方法的返回值最终为2。
那么try块中的return语句没有用吗?不是的。
如果你注释掉第8行,即finally中的return语句,你会发现test方法最终会返回1。结果如下:
发散一下,如果我在catch中返回一个值,同时也在finally中加入一个return语句,结果会怎么样呢?
答案是:现象相同。catch中的return和finally中的return都会执行。有兴趣的可以试试。