java中this關鍵字的作用是什麼

2021-03-04 03:08:39 字數 6552 閱讀 4062

1樓:匿名使用者

this的作用是在類中通過this訪問自身的屬性和方法。

比如:public class myclass()public void show(int a)}

2樓:草薙在

通常指自己 也就是代表呼叫當前方法的物件自己

比如class a裡面有一個test()方法 中有一個this關鍵字 它代表的就是class a 例項化之後的那個物件自己

靜態方法中不能出現this

3樓:匿名使用者

指當前物件

例如:abstract class 圖形

class 梯形 extends 圖形

public double 求面積()}

4樓:匿名使用者

在不同的位置代表的不同;

1,在構造器中,代表該構造器所建立的例項物件。

2,在方法中,指呼叫該方法的物件。

3,在流離塊中。只流離塊所屬的類的例項。

5樓:匿名使用者

自己的意思。

指例項。

6樓:隨意

this在java 中的作用和它的詞義很接近,在函式內部就是這個函式所屬的物件的引用變數.

java中this關鍵字用法

7樓:匿名使用者

一、this關鍵字主要有三個應用:

(1)this呼叫本類中的屬性,也就是類中的成員變數;

(2)this呼叫本類中的其他方法;

8樓:匿名使用者

1. 當成員變數和區域性變數重名時,在方法中使用this時,表示的是該方法所在類中的成員變數。(this是當前物件自己)如:

public class hello public static void main(string args) } 結果為:s = helloworld!1 -> this.

s = hello2 -> 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 void print() }class b public void print() }public class helloa }結果為: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 catch (interruptedexception ie) {}}}}; // 注意這裡有分號thread.start();}public void run() public static void main(string args) throws exception } 在上面這個例子中, thread 是一個匿名類物件,在它的定義中,它的 run 函式裡用到了外部類的 run 函式。

這時由於函式同名,直接呼叫就不行了。這時有兩種辦法,一種就是把外部的 run 函式換一個名字,但這種辦法對於一個開發到中途的應用來說是不可取的。那麼就可以用這個例子中的辦法用外部類的類名加上 this 引用來說明要呼叫的是外部類的方法 run。

4. 在建構函式中,通過this可以呼叫同一類中別的建構函式。如:public class thistest thistest() public static void main(string args) } 為了更確切的說明this用法,另外一個例子為:

public class thistest thistest(string str,int age) public static void main(string args) } 結果為:this測試成功25值得注意的是:

(1):在構造呼叫另一個建構函式,呼叫動作必須置於最起始的位置。

(2):不能在建構函式以外的任何函式內呼叫建構函式。

(3):在一個建構函式內只能呼叫一個建構函式。

5.this同時傳遞多個引數。public class testclass void seeit() public static void main(string args) } 結果為:9 10 **中的showtest(this),這裡的this就是把當前例項化的p傳給了showtest()方法,從而就執行了。

9樓:匿名使用者

this 表示本類 this.方法或者屬性 表示自身的方法或屬性

10樓:匿名使用者

this表示最近你使用的物件。。。

11樓:匿名使用者

this 代表當前物件

12樓:紹澍鄢含蕊

按執行步驟

:首先來看main

aa1=new

a("a1");

//建立一個a類的物件,a1為引用。此時呼叫建構函式

初始化;

a1.func2();

//以a1呼叫func2()

aa2=new

a("a2");

//意義同a1

this.func1();

//this表示a1,因為a1.func2();

這裡的意思是以a1呼叫func1();這裡是第一次輸出;

a2.func1();

//以a2呼叫func1(),第二次輸出

最後返回main(),完畢。

java中this的作用及用法是什麼?

13樓:匿名使用者

使用this呼叫本類中的屬性

現在觀察以下**,看會有那些問題:

public void setname(string name)

這裡面的兩個name都是setname方法中的name引數。

此時,特別希望可以通過一個指定的標識明確的表示要把傳入的name引數的值給類中的屬性,所以此時就需要使用this關鍵字,使用this.name就表示類中的屬性。

class person

public void setname(string name)

public void setage(int age)

public string getname()

public int getage()

public void print()

};public class demo35

};使用this還可以從一個構造方法中呼叫其他構造方法。

例如:有以下一個要求,一個類中存在了三個構造方法,但是要求,不管怎麼呼叫,最終都要求可以在物件例項化的時候列印一個「新的物件產生了」的提示。

class person

public person(string name)

public person(string name,int age)

public void setname(string name)

public void setage(int age)

public string getname()

public int getage()

public void print()

};以上**雖然可以實現功能,但是同樣的**出現了三次,而且後面的兩次出現純屬多餘吧。用this()的形式可以呼叫類中的無參構造方法。

class person

public person(string name)

public person(string name,int age)

public void setname(string name)

public void setage(int age)

public string getname()

public int getage()

public void print()

};public class demo36

};注意點1:

如果使用了this呼叫其他構造方法,則此語句,必須寫在構造方法的首行。

public void fun()

public person(string name,int age)

注意點2:

使用this可以呼叫本類中的其他構造方法,但是至少留一個構造方法,作為程式的出口。

public person()

public person(string name)

public person(string name,int age)

this最重要的特性 —— 表示當前物件

當前物件在程式中用以下形式體現:

· 當前操作此方法的物件,就稱為當前物件。

class demo

};public class demo38

};回顧:

之前講解的兩個物件比較的程式。

// 在類的內部增加一個比較的方法

public boolean ***pare(person p)else

}分析程式的執行過程:

class a

public void hello()

};class b

public void fun()

};public class oodemo40};

java中的this關鍵字到底指什麼

14樓:匿名使用者

如果有兩個同型別的物件,分別叫作a和b,那麼您也許不知道如何為這兩個物件同時呼叫一個f()方法:

class banana }

banana a = new banana(), b = new banana();

a.f(1);

b.f(2);

若只有一個名叫f()的方法,它怎樣才能知道自己是為a還是為b呼叫的呢?

為了能用簡便的、物件導向的語法來書寫**——亦即「將訊息發給物件」,編譯器為我們完成了一些幕後工作。其中的祕密就是第一個自變數傳遞給方法f(),而且那個自變數是準備操作的那個物件的控制代碼。所以前述的兩個方法呼叫就變成了下面這樣的形式:

banana.f(a,1);

banana.f(b,2);

這是內部的表達形式,我們並不能這樣書寫表示式,並試圖讓編譯器接受它。但是,通過它可理解幕後到底發生了什麼事情。

假定我們在一個方法的內部,並希望獲得當前物件的控制代碼。由於那個控制代碼是由編譯器「祕密」傳遞的,所以沒有識別符號可用。然而,針對這一目的有個專用的關鍵字:

this。this關鍵字(注意只能在方法內部使用)可為已呼叫了其方法的那個物件生成相應的控制代碼。可象對待其他任何物件控制代碼一樣對待這個控制代碼。

但要注意,假若準備從自己某個類的另一個方法內部呼叫一個類方法,就不必使用this。只需簡單地呼叫那個方法即可。當前的this控制代碼會自動應用於其他方法。

所以我們能使用下面這樣的**:

class apricot

void pit()

}在pit()內部,我們可以說this.pick(),但事實上無此必要。編譯器能幫我們自動完成。

this關鍵字只能用於那些特殊的類——需明確使用當前物件的控制代碼。例如,假若您希望將控制代碼返回給當前物件,那麼它經常在return語句中使用。

由於increment()通過this關鍵字返回當前物件的控制代碼,所以可以方便地對同一個物件執行多項操作。

1. 在構建器裡呼叫構建器

若為一個類寫了多個構建器,那麼經常都需要在一個構建器裡呼叫另一個構建器,以避免寫重複的**。可用this關鍵字做到這一點。

通常,當我們說this的時候,都是指「這個物件」或者「當前物件」。而且它本身會產生當前物件的一個控制代碼。在一個構建器中,若為其賦予一個自變數列表,那麼this關鍵字會具有不同的含義:

它會對與那個自變數列表相符的構建器進行明確的呼叫。這樣一來,我們就可通過一條直接的途徑來呼叫其他構建器。如下所示:

其中,構建器flower(string s,int petals)向我們揭示出這樣一個問題:儘管可用this呼叫一個構建器,但不可呼叫兩個。除此以外,構建器呼叫必須是我們做的第一件事情,否則會收到編譯程式的報錯資訊。

這個例子也向大家展示了this的另一項用途。由於自變數s的名字以及成員資料s的名字是相同的,所以會出現混淆。為解決這個問題,可用this.

s來引用成員資料。經常都會在java**裡看到這種形式的應用,本書的大量地方也採用了這種做法。

在print()中,我們發現編譯器不讓我們從除了一個構建器之外的其他任何方法內部呼叫一個構建器。

請輸入關鍵字,請輸入關鍵字

一 簡便運算。95.2 5.61 4.39 95.2 5.61 4.39 95.2 10 85.2 1.8 4.26 0.74 8.2 1.8 8.2 1.26 0.74 10 2 12 99 21.8 21.8 99 1 21.8 100 21.8 2180 3.6 0.1 2.7 1.5 3.6...

關於C 中的New關鍵字的語法

不傳遞引數時,兩種寫法是一樣的.但如果要傳遞引數,或者建構函式必須要傳遞引數時,必須寫成new a x,y 的形式 a a new a 表示申請一個sizeof a的空間 a a new a x 表示申請x個大小為sizeof a的空間你沒寫編譯器預設為1 謝謝採納 這裡其實是呼叫一個建構函式 如果...

如何選擇關鍵字

1全部選擇一句話中最關鍵的字 類似公文後面的主題詞 去掉副詞 介詞 連詞等 譬如,有一個客戶想在網上買幾種鮮花,他將會在搜尋框中輸入關鍵字 鮮花 即可尋找相關資訊 簡單的說,關鍵字就是使用者在使用搜尋引擎時輸入的 能夠最大程度概括使用者所要查詢的資訊內容的字或者詞,是資訊的概括化和集中化 還是用實際...