2013-03-18 29 views
1

如果執行return語句之後的方法將被執行,或者只是將其看作變量,那我只是感到困惑。 實施例:Java執行返回語句後的方法

public boolean onSystemChecked(boolean dubug){ 
    if(this.isActivated()) { 
    return this.ActivateAction(); 
    } else { 
    if(debug) { 
     System.out.println("[Debug] System Off!"); 
    } 
    } 
    return false; 
} 

威爾this.ActivateAction()進行?非常感謝你! :)

+0

當然是的.. – 2013-03-18 09:47:30

+1

一個主要的方法來測試這將比問這裏要快得多,但無論如何是的,它會 – 2013-03-18 09:53:46

回答

2

是否會執行this.ActivateAction()?

是。否則該方法將不知道該返回什麼!

返回語句首先評估的表達式,然後返回該值。當然,在虛空方法與只是

return; 

return語句的情況下沒有什麼評價。

有關更多詳細信息,請參閱部分14.17 of the Java Language Specification

0

是的,它會被執行。它不是在您的return聲明之後,而是來自該方法的return值,該值也將是該方法的return值。

3

是否會執行this.ActivateAction()?

是。

return this.ActivateAction(); 

相當於

boolean b = this.ActivateAction(); 
return b; 

如果return語句之後的方法將carryed出

this.ActivateAction()沒有return語句之後,但是return語句的一部分。

+0

謝謝,是的我的意思是在return語句中,謝謝! – user2181699 2013-03-18 10:18:47

0

是,this.ActivateAction()被執行,該方法的答案將被退回

1

「迴歸」實際返回值,而不是方法。所以方法的目的是處理並提供一個結果,只有在'return'之後返回一個值(value = this.ActivateAction()的輸出)

0

是的。this.ActivateAction()將被執行,即使它是recursive方法調用並返回最後的結果。

0

「這」是參考當前實例

所以,當你寫

this.ActivateAction() 

您使用的是當前實例調用該方法,答,因爲你的對象不爲空,因此該方法'ActivateAction'將被調用。

在調用之後,該方法執行並根據其定義返回一些值。

所以它不會不管你之前寫回或不

this.ActivateAction() 

總是會使用當前實例,並調用「ActivateAction」的方法,並返回一定的價值。

,因爲現在它返回一定的價值

從而

return this.ActivateAction() 

只意味着返回值,「返回」這裏沒有什麼特別的作用。