java趣味_Java趣味分享:try finally
考慮以下四個測試方法,它們會輸出什么?
public class Test {
public static void main(String\[\] args) {
System.out.println(test1());
System.out.println(test2());
System.out.println(test3());
System.out.println(test4());
}
private static int test1() {
int i = 1;
try {
return i;
} catch (Exception e) {
e.printStackTrace();
} finally {
i = 0;
}
return i;
}
private static int test2() {
int i = 1;
try {
return i;
} catch (Exception e) {
e.printStackTrace();
} finally {
i = 0;
return i;
}
}
private static User test3() {
User user = new User("u1");
try {
return user;
} catch (Exception e) {
e.printStackTrace();
} finally {
user = new User("u2");
}
return null;
}
private static User test4() {
User user = new User("u1");
try {
return user;
} catch (Exception e) {
e.printStackTrace();
} finally {
user.setName("u2");
}
return null;
}
}
public class User {
public User(String name) {
this.name = name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return name;
}
}
答案如下:
1
0
u1
u2
結論
1、不管try,finally都會執行;
2、在try中return,在finally執行前會把結果保存起來,即使在finally中有修改也以try中保存的值為準,但如果是引用類型,修改的屬性會以finally修改后的為準;
3、如果try/finally都有return,直接返回finally中的return。
推薦去我的博客:
覺得不錯,別忘了點贊+轉發哦!
總結
以上是生活随笔為你收集整理的java趣味_Java趣味分享:try finally的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 5.7 差异备份_MySQL
- 下一篇: java xpdf 转换成html_ja