2017-03-20 37 views
0

在Java中,當您在void函數中使用return;語句時,低級別會發生什麼,而不是讓函數以達到最終結束?有什麼區別嗎?在無效函數中使用返回值的低級分析

例如,可能有一些邏輯差異(和編譯時間isses),如與

public void foo() { 
    if (true) { 
     return; 
    } 
    doSomething(); 
} 

在這一點上,我們從未執行doSomething()。但是,這是而不是我在說什麼。我說的是:

public void foo1() { 
    doSomething(); 
    return; 
} 

VS

public void foo2() { 
    doSomething(); 
} 

是否有與這是如何在機器級別進行處理什麼不同嗎?

+0

當在intellij中顯示時,'foo1'&'foo2'的字節代碼是相同的 – Jerry06

回答

2

參照Oracle doc.
聲明爲void的任何方法都不返回值。
將「return」語句添加到此類方法是可選的。
'return'語句的唯一目的就是分支出控制流程塊並退出該方法。

public void foo1() { 
    return; 
    doSomething(); //compiler error. 
} 


因此,

public void foo1() { 
    doSomething(); 
    return; 
} 

public void foo2() { 
    doSomething(); 
} 

在技術上是相同的。