搜尋
首頁JavaJava入門java中this關鍵字怎麼使用?

java中this關鍵字怎麼使用?

Nov 02, 2020 pm 04:30 PM
javathis關鍵字

java中this關鍵字的用法:1、當成員變數和局部變數重名時,在方法中使用this時,表示的是該方法所在類別中的成員變數;2、在建構函數中,透過this可以呼叫同一類別中別的建構函數;3、使用this同時傳遞多個參數。

java中this關鍵字怎麼使用?

相關推薦:《Java影片教學

1、當成員變數、局部變數重名時,在方法中使用this時,表示的是該方法所在類別中的成員變數。 (this是目前物件自己)

public class Hello {
    String s = "Hello"; 
    public Hello(String s) {
       System.out.println("s = " + s);
       System.out.println("1 -> this.s = " + this.s);       
       this.s = s;//把参数值赋给成员变量,成员变量的值改变
       System.out.println("2 -> this.s = " + this.s);
    } 
    public static void main(String[] args) {
       Hello x = new Hello("HelloWorld!");
       System.out.println("s=" + x.s);//验证成员变量值的改变    }
}

結果為:

s = HelloWorld!
1 -> this.s = Hello
2 -> this.s = HelloWorld!
s=HelloWorld!

在這個例子中,建構子Hello中,參數s與類Hello的成員變數s同名,這時如果直接對s進行操作則是對參數s進行操作。若要對類Hello的成員變數s進行操作就應該用this進行引用。運行結果的第一行就是直接將建構函式中傳遞過來的參數s進行列印結果; 第二行是對成員變數s的列印;第三行是先將成員變數s賦傳過來的參數s值後再列印,所以結果是HelloWorld!而第四行是主函數中直接列印類別中的成員變數的值,也可以驗證成員變數值的改變。

2、把自己當作參數傳遞時,也可以用this.(this作當前參數進行傳遞)

class A {
    public A() {
       new B(this).print();// 调用B的方法
    }
    public void print() {
       System.out.println("HelloAA from A!");
    }
}
class B {
    A a;
    public B(A a) {
       this.a = a;
    }
    public void print() {
       a.print();//调用A的方法
       System.out.println("HelloAB from B!");
    }
}
public class HelloA {
    public static void main(String[] args) {
       A aaa = new A();
       aaa.print();
       B bbb = new B(aaa);
       bbb.print();
    }
}

結果為:

HelloAA from A!
HelloAB from B!
HelloAA from A!
HelloAA from A!
HelloAB from B!

在這個例子中,物件A的建構子中,用new B(this)把物件A自己當作參數傳遞給了物件B的建構子。

3、有時候,我們會用到一些內部類別和匿名類,如事件處理。在匿名類別中用this時,這個this則指的是匿名類別或內部類別本身。這時如果我們要使用外部類別的方法和變數的話,則應該加上外部類別的類別名稱。如:

public class HelloB {
    int i = 1;
 
    public HelloB() {
       Thread thread = new Thread() {
           public void run() {
              for (int j=0;j<p>在上面這個範例中, thread 是一個匿名類別對象,在它的定義中,它的 run 函數裡用到了外部類別的 run 函數。這時由於函數同名,直接呼叫就不行了。這時有兩種辦法,一種就是把外在的 run 函數換一個名字,但這種辦法對於一個發展到中途的應用來說是不可取的。那就可以用這個範例中的方法用外在類別的類別名稱加上 this 引用來說明要呼叫的是外部類別的方法 run。 </p><p>4、在建構子中,透過this可以呼叫同一類別中別的建構子。如:</p><pre class="brush:php;toolbar:false">public class ThisTest {
    ThisTest(String str) {
       System.out.println(str);
    }
    ThisTest() {
       this("this测试成功!");
    }
 
    public static void main(String[] args) {
       ThisTest thistest = new ThisTest();
    }
}

為了更確切的說明this用法,另外一個例子為:

public class ThisTest {
    private int age;
    private String str;
 
    ThisTest(String str) {
       this.str=str;
       System.out.println(str);
    }
    ThisTest(String str,int age) {
       this(str);
       this.age=age;
       System.out.println(age);
    }
 
    public static void main(String[] args) {
       ThisTest thistest = new ThisTest("this测试成功",25);
      
    }
}

結果為:

this测试成功
25

值得注意的是: 
# 1:在構造呼叫另一個建構函數,呼叫動作必須置於最起始的位置。 
  2:不能在建構子以外的任何函數內呼叫建構子。 
  3:在一個建構函式內只能呼叫一個建構函數。

5、this同時傳遞多個參數。

public class TestClass {
    int x;
    int y;
 
    static void showtest(TestClass tc) {//实例化对象
       System.out.println(tc.x + " " + tc.y);
    }
    void seeit() {
       showtest(this);
    }
 
    public static void main(String[] args) {
       TestClass p = new TestClass();
       p.x = 9;
       p.y = 10;
       p.seeit();
    }
}

結果為:

9 10

程式碼中的showtest(this),這裡的this就是把目前實例化的p傳給了showtest()方法,從而就運行了。

更多程式相關知識,請造訪:程式設計入門! !

以上是java中this關鍵字怎麼使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境