public class SmallT {
public static void main(String args[]) {
SmallT t = new SmallT();
int b = t.get();
System.out.println(b);
}
public int get() {
try {
return 1;
} finally {
return 2;
}
}
}
返回的結(jié)果是2。
我可以通過下面一個例子程序來幫助我解釋這個答案,從下面例子的運行結(jié)果中可以發(fā)現(xiàn),try中的return語句調(diào)用的函數(shù)先于finally中調(diào)用的函數(shù)執(zhí)行,也就是說return語句先執(zhí)行,finally語句后執(zhí)行,所以,返回的結(jié)果是2。Return并不是讓函數(shù)馬上返回,而是return語句執(zhí)行后,將把返回結(jié)果放置進函數(shù)棧中,此時函數(shù)并不是馬上返回,它要執(zhí)行finally語句后才真正開始返回。
在講解答案時可以用下面的程序來幫助分析:
public class Test {
public static void main(String[] args) {
System.out.println(newTest().test());
}
int test() {
try {
return func1();
} finally {
return func2();
}
}
int func1() {
System.out.println("func1");
return 1;
}
int func2() {
System.out.println("func2");
return 2;
}
}
-----------執(zhí)行結(jié)果-----------------
func1
func2
2
結(jié)論:finally中的代碼比return和break語句后執(zhí)行
遠近互聯(lián)技術-劉 整理發(fā)布,希望能對同是技術的你有所幫助。
遠近互聯(lián)專業(yè)提供網(wǎng)站建設、APP開發(fā)、網(wǎng)站優(yōu)化、外貿(mào)網(wǎng)站SEO、微信運營的品牌整合營銷服務,讓客戶通過網(wǎng)絡品牌建立與網(wǎng)絡傳播提高業(yè)績。






