首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java return 語句完整用法解析

     編輯:Java 相關知識

Java return 語句:返回值、結束方法、特殊場景全解析

`return` 是 Java 流程控制關鍵字,具備雙重功能:返回值給呼叫者與立即結束當前方法執行。正確理解其在不同返回型別方法中的行為,是寫出健壯程式的基礎。

三種基本模式

方法宣告return 形式說明
int getAge()return age;必須返回 int 相容值,不可省略
void printAge()return; 或無僅結束方法,不可 跟任何表達式
void check(int a)if (a>0) return;提前結束(守衛子句),後續程式碼不執行

程式碼範例

public class ReturnDemo {

    private int age = 25;

    // 1. 有返回值:必須 return 表達式
    public int getAge() {
        return age; // 編譯器強制要求
    }

    // 2. 無返回值:可用 return; 提前離開
    public void printAge() {
        System.out.println("Age: " + age);
        // return; // 可省略,方法結束隱含返回
    }

    // 3. 守衛子句:參數檢查失敗直接返回
    public void setAge(int age) {
        if (age < 0 || age > 150) {
            System.err.println("非法年齡: " + age);
            return; // 結束方法,不執行賦值
        }
        this.age = age;
    }

    // 4. try-finally 中的 return 行為
    public int tricky() {
        try {
            return 1; // 先記錄返回值 1
        } finally {
            System.out.println("finally 執行");
            // return 2; // 若這裡也 return,會覆蓋 try 的返回值!慎用
        }
        // 實際返回 1
    }
}

關鍵規則與陷阱

  1. void 方法:`return;` 後不能有任何表達式,甚至不能寫 `return null;`。
  2. 非 void 方法:所有執行路徑必須以 `return 值;` 結束,否則編譯錯誤 missing return statement。
  3. finally 覆蓋 return:若 `finally` 區塊執行 `return`/`throw`,會覆蓋 `try`/`catch` 的返回值或異常,導致邏輯錯誤。禁止在 finally 中使用 return/throw。
  4. 建構子:不能有返回值,但可用 `return;` 提前結束(罕見)。
  5. Lambda/Stream:隱式返回最後一行表達式值,無需寫 `return`(單行時)。

最佳實務

  • 單一出口 vs 多出口:現代風格傾向「守衛子句」多出口,減少巢狀縮排,提高可讀性。
  • 避免在 finally return:僅用於資源清理(關閉流、釋放鎖)。
  • Optional 替代 null:返回型別用 `Optional` 強制呼叫者處理無值情況,減少 NPE。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved