鍍金池/ 教程/ Java/ Java this關(guān)鍵字
Java參數(shù)傳遞
Java靜態(tài)內(nèi)部類
Java final關(guān)鍵字
http://www.yiibai.com/java_object_oriented_design/java_inheritan
Java泛型類
Java標(biāo)準(zhǔn)注解
Java接口教程
Java注解
Java枚舉類型
http://www.yiibai.com/java_object_oriented_design/java_class_ins
Java接口實(shí)現(xiàn)
Java哈希編碼
Java泛型約束
http://www.yiibai.com/java_object_oriented_design/java_import.ht
Java注解默認(rèn)值
Java異常拋出
Java不可變對(duì)象
Java類基礎(chǔ)
Java接口繼承
Java類方法
Java訪問級(jí)別
Java對(duì)象克隆
Java初始化塊
Java可變長(zhǎng)度參數(shù)
Java接口字段
Java對(duì)象相等比較(Equals)
Java實(shí)例和靜態(tài)方法
Java繼承方法隱藏(覆蓋)
Java面向?qū)ο笤O(shè)計(jì)
Java對(duì)象finalize()方法
Java抽象類和方法
Java Object類
Java泛型方法和構(gòu)造函數(shù)
Java枚舉體
Java接口方法
Java this關(guān)鍵字
Java注解類型的限制
Java main()方法
Java Enum類
Java注解用法
Java枚舉比較
Java注解類型
Java內(nèi)部類成員
Java繼承和構(gòu)造函數(shù)
Java類實(shí)例化
Java內(nèi)部類類型
Java對(duì)象toString()方法
Java finally塊
Java繼承教程
Java自定義異常
Java枚舉值
Java接口作為類型
Java異常類
Java方法覆蓋教程
http://www.yiibai.com/java_object_oriented_design/java_class_bas
Java枚舉方法
Java方法重載
http://www.yiibai.com/java_object_oriented_design/java_interface
Java異常用法
Java內(nèi)部類
Java類成員訪問級(jí)別
Java異常處理教程
Java注解反射
Java構(gòu)造函數(shù)(構(gòu)造器)
Java導(dǎo)入(import語句的用法)

Java this關(guān)鍵字

this關(guān)鍵字是什么?

Java有一個(gè)關(guān)鍵字叫this。 它是對(duì)類的當(dāng)前實(shí)例的引用。它只能在實(shí)例的上下文中使用。以下代碼顯示如何使用this關(guān)鍵字。

public class Main {
  int varA = 1;
  int varB = varA; // Assign value of varA to varB
  int varC = this.varA; // Assign value of varA to varC
}

當(dāng)實(shí)例變量或類變量被具有相同名稱的另一個(gè)變量覆蓋時(shí),需要使用關(guān)鍵字this限定一個(gè)實(shí)例變量,并使用類名稱定義一個(gè)類變量。

實(shí)例

下面的代碼顯示了如何使用this關(guān)鍵字來引用一個(gè)實(shí)例變量,它的名字被一個(gè)局部變量覆蓋隱藏。

public class Main {
  int num = 2018; // 這是一個(gè)實(shí)例變量

  void printNum(int num) { // 這個(gè)參數(shù)的名稱也叫 num ,與上面實(shí)例變量同名
    System.out.println("Parameter num: " + num); // 打印參數(shù) num 的值
    System.out.println("Instance variable num: " + this.num); // 打印實(shí)例變量 num 的值
  }

  public static void main(String[] args) {
    Main tt6 = new Main();
    tt6.printNum(2017);
  }
}

上面的代碼生成以下結(jié)果。

Parameter num: 2017
Instance variable num:2018

注意:有時(shí),需要保持變量名相同,因?yàn)樗鼈兇硐嗤氖虑椤?/p>

例如,以下代碼非常常見:
Student類聲明了一個(gè)實(shí)例變量id。 在其setId()方法中,它還命名參數(shù)id,并使用this.id引用實(shí)例變量。
它還使用this.id在其getId()方法中引用實(shí)例變量id。

public class Student {
  private int id; // An instance variable
  public void setId(int id) {
    this.id = id;
  }

  public int getId() {

    return this.id;
  }
}

可以使用關(guān)鍵字this來限定實(shí)例方法名。 以下代碼顯示使用關(guān)鍵字this調(diào)用m2()方法的m1()方法。

public class Main {
  void m1() {
    // Invoke the m2() method
    this.m2(); // same as "m2();" 
    // 或者不要 this 直接 m2();
    // m2();
  }

  void m2() {
    // do something
    System.out.println("This m2() method.");
  }
}