在网上看到的代码,倒是没有明白结果是为什么

carlos 发布于 2014/11/29 19:40
阅读 263
收藏 3

【DevOps必读】产品经理与程序员之间如何破局?>>>

public class TryCatchFinally {
 
    @SuppressWarnings("finally")
    public static final String test() {
        String t = "";
 
        try {
            t = "try";
            return t;
        } catch (Exception e) {
            // result = "catch";
            t = "catch";
            return t;
        } finally {
            t = "finally";
        }
    }
 
    public static void main(String[] args) {
        System.out.print(TryCatchFinally.test());
    }
 

}


网上看到的代码,先猜猜结果,然后再往下面看。


输出的结果是try

这个为什么呢?

虽然这里有答案,但是还是不很明白

http://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html

加载中
0
R
RunningOrion

return返回的基本类型 是赋值,对象是引用,这里把return换成另一个变量,一下就明白了。。。。

还可以试试,不用String改成int或者char基本类型试试。。

0
Gyaung
Gyaung
因为在try 里面没有程序报错或者异常,并且在try里面直接return 了,所以,在 finally里面,没有return t ,所以不会输出finally
0
走位风骚闪着腰
走位风骚闪着腰
return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)
返回顶部
顶部