try{ return }finally{}中的return
阿新 • • 發佈:2019-01-12
try 中的 return 語句呼叫的函式先於 finally 中呼叫的函式執行,也就是說 return 語句先執行,finally 語句後執行,但 return 並不是讓函式馬上返回結果,而是 return 語句執行後,將把返回結果放置進函式棧中,此時函式並不是馬上返回結果,它要執行 finally 語句後才真正開始返回,,但此時finally塊中的程式碼已經影響不了return返回的值了
public class Demo {
public static void main(String[] args) {
System.out.println (num());
}
public static int num(){
int i = 0;
try {
i = 1;
return i;
}catch (Exception e){
}finally {
i = 2;
}
return i;
}
}
列印結果:1
返回的是基本資料型別,直接返回值
public class Demo {
public static void main (String[] args) {
System.out.println(num().getI());
}
public static Test num() {
Test t = new Test();
try {
t.setI(1);
return t;
} catch (Exception e) {
} finally {
t.setI(2);
}
return t;
}
}
class Test{
private int i ;
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
列印結果:2
返回的是物件的引用