眾所周知,return 只能用在有傳回型別的函數中,但是有傳回值的函數一定要有return嗎?return都可以用在函數的哪些地方呢?這是本文需要討論的問題。
--------------------------------------------------------------------------------
例一:
class test {
public String test() {
if(true){
return "";
}
else{
return "";
}
}
}
上面這樣即可通過編譯,但是下面這兩個例子卻不能通過編譯:
(一)
class test {
public String test() {
if(true){
return "";
}
}
}
(二)
class test {
public String test() {
if(isTrue()){
return "";
}
else if(!isTrue()){//兩個if裡的判斷包括了所有的可能性,但是還是編譯期error
return "";
}
}
boolean isTrue(){
return true;
}
}
結論1:
對於(一),這是因為java編譯器認定單獨的if語句只在當一定條件滿足情況下才執行,它認為if不會有任何情況下都能執行的能力。
對於(二),這是因為java編譯器對if else 語句能夠全面囊括所有情況的能力只限定在的if...else(或if...else if...else)時,而不包括if...else if。
--------------------------------------------------------------------------------
再看例二:
class test {
public String test() {
while(true){
return "";
}
}
}
上面這樣即可通過編譯,但是下面這樣不行:
class test {
public String test() {
while(isTrue()){
return "";
}
}
boolean isTrue(){
return true;
}
}
結論2:
這是因為編譯器認為while語句有在任何情況下都能執行的能力,但是只在入參為true的情況下有該能力。
--------------------------------------------------------------------------------
再看例三:
public class test {
String test() throws Exception{
throw new Exception();//拋出異常後,跳出程式,程式中止
}
}
結論3:
如果函數中建立了異常,並拋出,則該函數可以不傳回值。
--------------------------------------------------------------------------------
知道了以上的情況,你就可以熟練自如得運用return了。