`
jilong-liang
  • 浏览: 481485 次
  • 性别: 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 try()的括号中代码含义(实现Closeable接口)(csdn)————程序.pdf

    在传统的`try-catch-finally`中,`finally`块用于确保在执行完`try`块后,即使有异常抛出,资源也能被正确关闭。然而,这需要手动调用`close()`方法,如文件流、网络连接等。 Java 7引入的`try-with-resources`语句...

    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等於几?  第二十九,两个...

    java面试葵花宝典

    #### try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后 - `finally`块中的代码总会被执行,即使`try`块中有`return`语句。`finally`块会在`return`...

    Java面试宝典2013_PDF版.pdf

    38. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? finally块中的代码总是会被执行,无论try块中是否有return语句,并且总是会在return执行前...

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

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

    变态级JAVA程序员面试32问(附答案)

    27. try {}里有一个 return 语句,那么紧跟在这个 try 后的 finally {}里的代码会不会被执行,什么时候被执行,在 return 前还是后? finally {}里的代码总是会被执行,不管 try 语句中是否有 return 语句。finally...

    中科软笔试题目密密麻麻

    16.try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的 code 会不会被执行 在 Java 中,try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{}里的 code 会被执行,但是在 return 之前...

    JAVA程序员面试32问

    #### 第二十七,try{} 里有一个 return 语句,那么紧跟在这个 try 后的 finally{} 里的 code 会不会被执行,什么时候被执行,在 return 前还是后? - `finally`块中的代码一定会被执行,即使`try`块中有`return`...

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

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

    java常见面试题

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会执行,即使在`try`或`catch`块中有`return`语句。`finally`块在`...

    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面试宝典

    **1.38 try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?** `finally`块中的代码总是会被执行,即使`try`块中有`return`语句,也会在`return`...

    2011最新Java程序员面试笔试宝典

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块总是会执行,即使`try`块中有`return`语句。执行顺序是先执行`finally`块,再返回...

    java学习文档

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后? `finally`块中的代码总是会被执行,即使`try`块中有`return`语句。`finally`块中的代码在`...

    java面试大全

    try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?** 会执行`finally`块中的代码。如果`finally`中有`return`,那么它的返回值会覆盖`try`块中的...

Global site tag (gtag.js) - Google Analytics