您的位置:首页 > 其它

研究try catch finally return

2016-02-23 21:26 316 查看
如果try里面有个return的话,finally还是会执行。但是如果这样的话,会输出什么结果呢?

package com.yingtou.hqdata.tdb.schedule;

public class Test {

public static void main(String[] args) {

System.out.println(test());

}

private static int test() {

int i = 1;

try {

i++;

// int b = 1/0;

return i;

} catch (Exception e) {

System.out.println("异常了");

return i;

}finally {

i++;

System.out.println("final"+i);

}

}

}

答案是final3

2

为什么finally执行后i变成了3,然后return却返回2呢?我觉得finally类似函数,然后我们i传值,最后i变成3,但至少只是值传递,所以return还是2;如果我们把它改成对象,那就是传对象了,如下,会输出什么结果呢?

package com.yingtou.hqdata.tdb.schedule;

public class Test {
public static void main(String[] args) {
System.out.println(test().aa);
}

private static Demo test() {
Demo i = new Demo();
i.aa = "1";
try {
i.aa = "2";
//            int b = 1/0;
return i;
} catch (Exception e) {
System.out.println("异常了");
return i;
}finally {
i.aa = "3";
System.out.println("final"+i.aa);
}

}
}
答案是final3
3

验证了我刚刚的观点,传的是引用,所以改了i.aa的值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: