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

Java this 關鍵字深度解析:三大核心用法與遞歸實戰

     編輯:Java 綜合教學

Java this 關鍵字深度解析:三大核心用法與遞歸實戰

this 代表當前對象實例,是 Java 區分實例成員與局部變量、實現構造器鏈調用、支援遞歸調用的關鍵語法。本文通過實例代碼系統講解三大核心場景。

核心用法速覽

場景語法說明
訪問實例變量this.field區分同名局部變量/參數
調用實例方法this.method()當前對象的方法調用
構造器鏈調用this(args)無參構造調用有參構造,必須置於首行

完整實戰代碼

public class Student {
    private String name = "張三";
    private int sum = 0;

    // 1. 構造器鏈:無參調用有參
    public Student() {
        this("王五"); // 必須第一行
    }

    public Student(String name) {
        this.name = name; // 2. 區分參數 name 與實例變量 name
    }

    public void say() {
        System.out.println(this.name); // 3. 調用實例方法
    }

    // 遞歸求和示範
    public void sum(int num) {
        this.sum += num--;        // 累加實例變量
        if (0 < num) {
            sum(num);             // 遞歸調用(隱含 this.sum())
        } else {
            System.out.println("sum = " + this.sum);
            this.say();           // 遞歸終點調用實例方法
        }
    }

    public static void main(String[] args) {
        Student s = new Student(); // 觸發無參構造 -> 有參構造
        s.sum(5);                  // 輸出 sum=15 並印出 name
    }
}

執行流程圖解

  1. new Student() → 調用無參構造
  2. 無參構造首行 this("王五") → 調用有參構造,將 name 設為「王五」
  3. s.sum(5) → 遞歸累加 5+4+3+2+1=15,存入實例變量 sum
  4. 遞歸終點調用 this.say() → 輸出「王五」

常見誤區與最佳實踐

  • ❌ this() 不能出現在構造器非首行位置
  • ❌ 靜態方法中不可使用 this(無當前實例)
  • ✅ 參數與字段同名時慣用 this.field 明確語義
  • ✅ 構造器鏈減少重複初始化邏輯,提升可維護性

進階:this 在內部類中的語義

class Outer {
    int value = 10;
    class Inner {
        int value = 20;
        void print() {
            System.out.println(this.value);        // 20 (Inner 實例)
            System.out.println(Outer.this.value);  // 10 (Outer 實例)
        }
    }
}

內部類可用 OuterClass.this 訪問外部類實例成員。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved