1. 程式人生 > >try{ return }finally{}中的return

try{ return }finally{}中的return

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

返回的是物件的引用