`
jilong-liang
  • 浏览: 471716 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

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

    博客分类:
  • Java
阅读更多
Java 写道
public class Test6 {
/**
* try {}里有一个return语句,那么紧跟在这个try后的finally {}里的
* code会不会被执行,什么时候被执行,在return前还是后?
* @return
*/
public String Test1() {
String str = "真的在";
try {
str = str+"return前输出?";
return str;
} finally {
str = "finally在return前输出";
System.out.println(str);
}
}

public static void main(String[] args) {
Test6 t = new Test6();
System.out.println(t.Test1());
}
}
 
 
0
9
分享到:
评论
8 楼 kidneyball 2013-04-19  
haiyupeter 写道
肯定是finnaly再return的嘛


你中招了……话说当年某天才还开玩笑说用这个例子做笔试题拿去面试的,后来不知道有没有真用。《深入Java虚拟机》里有详细说明,先执行return,把结果缓存起来,然后再执行finally,最终返回缓存的结果。
7 楼 usench 2013-04-19  
很明显你是初学者...
6 楼 haiyupeter 2013-04-19  
肯定是finnaly再return的嘛
5 楼 if(i!=我){} 2013-04-19  
根据常理,你都re了,还finally个毛线!给谁看?
4 楼 jilong-liang 2013-04-18  
我也没测试过!楼主提出来!受教…
Spring_g 写道
应该是先执行完finally里面的,然后再返回值,如果finally里和try里都有return语句,应该是只返回finally里面的值,不会再执行try里面的return语句

3 楼 kidneyball 2013-04-18  
先执行return,再执行finial,但执行return时返回值会被先储存起来,真正返回时返回储存的值,在final中修改return返回的变量值不会影响返回结果。楼主可以用下面代码测试一下

public class Test {
    private static int foo() {
        int i = 0;
        try {
            return i++;
        } finally {
            System.out.println(++i); //第一行输出2
        }
    }

    public static void main(String[] args) {
        System.out.println(foo()); //第二行输出0
    }
}


2 楼 Spring_g 2013-04-18  
应该是先执行完finally里面的,然后再返回值,如果finally里和try里都有return语句,应该是只返回finally里面的值,不会再执行try里面的return语句
1 楼 dove19900520 2013-04-18  
没测试过,不过我觉得是先执行finally中的code之后再执行return语句,不知对不对,LZ

相关推荐

    Java问题宝典2012版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 27 39、下面的程序代码输出的结果是多少? 28 40、final, finally, finalize的区别。 30 ...

    变态级JAVA程序员面试32问

     第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?  第二十八,编程题: 用最有效率的方法算出2乘以8等於几?  第二十九,两个...

    net学习笔记及其他代码应用

    43.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 答:会执行,在return前执行。 44.两个对象值相同(x.equals(y) == true),但却可有不同...

    java 面试题 总结

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    java面试题及答案.doc

    27. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会 28. 编程题: 用最有效率的方法算出2乘以8等於几? 29. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可...

    java 面试常问的问题 如何回答

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    JAVA面试题 对JAVA面试有帮助!

     第二十七,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?  第二十八,编程题:用最有效率的方法算出2乘以8等於几?  有C背景的程序员...

    超级有影响力霸气的Java面试题大全文档

    换言之,很可能数个使用者在执行某个 Stateless Session Bean 的 methods 时,会是同一个 Bean 的 Instance 在执行。从内存方面来看, Stateful Session Bean 与 Stateless Session Bean 比较, Stateful Session ...

    java面试宝典2012版.pdf

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 39、下面的程序代码输出的结果是多少? 40、final, finally, finalize的区别。 41、...

    JAVA面试题最全集

    35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、Classpath中的同web-inf中的class加载方式有...

    java面试宝典

    21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...

    千方百计笔试题大全

    21、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 10 22、我们在web 应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,...

    java基础题 很全面

    34. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 11 35. 两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对? 11 36...

    最新Java面试宝典pdf版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    Java面试宝典2010版

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 39、下面的程序代码输出的结果是多少? 40、final, finally, finalize的区别。 41、...

    Java面试笔试资料大全

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    Java面试宝典-经典

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    JAVA面试宝典2010

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

    java面试题大全(2012版)

    38、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后? 25 39、下面的程序代码输出的结果是多少? 25 40、final, finally, finalize的区别。 27 ...

Global site tag (gtag.js) - Google Analytics