如果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的值。