2013-08-16 164 views
1

這可能是一個相當容易回答的問題,但它一直在困擾我一段時間。返回內部和外部If語句

如果在if語句內部,在方法內部(用Java語言)有一個return語句,但是我在結尾添加另一個作爲catch-all並避免錯誤,都返回值都是如果if語句是真的,那麼一個接一個地開火?

一個例子:

public int getNumber() { 
if(5 > number) { 
return 5; 
} 
return 0; 
} 

結果:方法返回5,然後經由棧的邏輯,此後不久返回0。

或者,我需要使用一個外部變量,像這樣:

int num = 1; 
public int getNumber() { 
if(5 > number) { 
num = 5; 
} 
return num; 
} 

結果:方法的變化而變化NUM爲5,則NUM返回使用。我想在這種情況下,根據變量的用法,返回語句不一定是必需的。

在此先感謝。

回答

4

不,這兩個值都不會返回。一個return語句停止在那裏執行該方法,並返回其值。事實上,如果return之後的代碼是編譯器知道由於return而無法達到的代碼,它會發出抱怨。

您不需要使用if以外的變量在最後返回它。但是,如果您的方法冗長而複雜,則由於只使用一條return語句,因此此技術可以提高可讀性和清晰度。

+0

哦,對,代碼將無法訪問無論如何。感謝您的迴應。 – A13X

1

只使用第一個return語句命中。該方法然後終止。

有一些代碼約定,因爲它們可能很難閱讀,因此對多個返回語句不滿意,但我不是其中之一。 :)

+0

沒關係,我想我現在會打破慣例。感謝你的回答。 – A13X

+0

@ A13X - 這是一個非常非典型的約定。請參閱[應該一個函數只有一個返回語句?](http://stackoverflow.com/questions/36707/should-a-function-have-only-one-return-statement) – femtoRgon