Java 語言中的 return 語句


作者:qlampskyface

和作者聯繫:[email protected]


    衆所周知,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了。

 

發佈了41 篇原創文章 · 獲贊 0 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章