當前位置:首頁 » 編程語言 » java關鍵字this

java關鍵字this

發布時間: 2022-04-25 12:24:21

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

Java關鍵字this只能用於方法方法體內。當一個對象創建後,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是 this。

this主要要三種用法:

  1. 表示對當前對象的引用。

  2. 表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分。這是第一種用法的特例,比較常用。

  3. 用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。注意:只能引用一個構造方法且必須位於開始。

  4. this不能用在static方法中!有人給static方法的定義:沒有this的方法。

Ⅱ 對於java中this關鍵字的理解

this關鍵字可以簡單的理解為,誰調用this所在的方法,this就是誰。
類的構造函數與getter、setter方法常用到this關鍵字(JavaBean)

JavaBean是一種可重用的Java組件,它可以被Applet、Servlet、SP等Java應用程序調用.也可以可視化地被Java開發工具使用。它包含屬性(Properties)、方法(Methods)、事件(Events)等特性。
public class Person {
//==========靜態屬性===========
//--想學編程的可以來我這看看----
private String name; //姓名
private int age; //年齡
private String gender; //性別

//==========動態行為===========
public void readBook(String book) {
System.out.println("reading " + book);
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;//this.name就是上面的private String name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}
}
官方定義
this 是自身的一個對象,代表對象本身,可以理解為:指向對象本身的一個指針。
this 的用法在 Java 中大體可以分為3種:
1.普通的直接引用
這種就不用講了,this 相當於是指向當前對象本身。
2.形參與成員名字重名,用 this 來區分:
class Person {
private int age = 10;
public Person(){
System.out.println("初始化年齡:"+age);}
public int GetAge(int age){
this.age = age;
return this.age;
}
}
public class test1 {
public static void main(String[] args) {
Person Harry = new Person();
System.out.println("Harry's age is "+Harry.GetAge(12));
}
}

希望對您有所幫助!~

Ⅲ java 中的this關鍵字的幾種用法

  1. 當成員變數和局部變數重名時,在方法中使用this時,表示的是該方法所在類中的成員變數。(this是當前對象自己)

    代碼中的showtest(this),這里的this就是把當前實例化的p傳給了showtest()方法,從而就運行了。

Ⅳ Java中怎麼使用this關鍵字什麼時候可以使用

當你想要引用當前對象的某種東西,比如當前對象的某個方法,或當前對象的某個成員,你便可以利用this來實現這個目的。

比如說吃飯這個方法它是由上帝來定義的,世界上所有的人來執行。吃飯這個行為發生的時候,主體就是在吃飯的這個人,也就是要有人執行吃飯這個行為。 有時候我們需要在一個行為(方法)里,能明確知道這個行為是誰來執行的,確切的說就是我要知道誰在吃飯。

function eatSomthing() { this.eat }

在編程語言裡面每一個定義的方法里,都會有一個this關鍵字,這個this關鍵不是由在那兒定義來決定的,而是由誰來執行的決定的。這是判斷this關鍵。

his表示的對像,是這個方法活動的"上下文"。所謂的"上下文",也就是表示當前的這些代碼的活動范圍,當前的活動(代碼的執行)在那個對像上的發生的意思。

吃飯這個活動,是在張三這個對像上發生的,則張三是吃飯的下下文。在body里去查找的div元素,則body是這個查找活動的上下文。那這個this,就是這個方法運行活動的范圍了。

方法里this當前這個方法運行的上下文,但上下文不僅限於是this(就是整體與個體的區別)。

Ⅳ java中 this關鍵字的用法

指代當前對象。內部類中,有一個隱式的this,指代外部類的對象,調用內部類的方法。

Ⅵ java 的this的運用

在java中,this關鍵字有很多種用法。 在java中,這是一個引用當前對象的引用變數。

java this關鍵字的用法如下:

  • this關鍵字可用來引用當前類的實例變數。

  • this關鍵字可用於調用當前類方法(隱式)。

  • this()可以用來調用當前類的構造函數。

  • this關鍵字可作為調用方法中的參數傳遞。

  • this關鍵字可作為參數在構造函數調用中傳遞。

  • this關鍵字可用於從方法返回當前類的實例。

  • 建議:如果你是java初學者,只學習 this 關鍵字的前三個用法就可以了。

    更詳細可以查詢一些教程,例如:https://www.yii.com/java/this-keyword.html

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

如果有兩個同類型的對象,分別叫作a和b,那麼您也許不知道如何為這兩個對象同時調用一個f()方法:
class Banana { void f(int i) { /* ... */ } }
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 pick() { /* ... */ }
void pit() { pick(); /* ... */ }
}
在pit()內部,我們可以說this.pick(),但事實上無此必要。編譯器能幫我們自動完成。this關鍵字只能用於那些特殊的類——需明確使用當前對象的句柄。例如,假若您希望將句柄返回給當前對象,那麼它經常在return語句中使用。
由於increment()通過this關鍵字返回當前對象的句柄,所以可以方便地對同一個對象執行多項操作。
1. 在構建器里調用構建器
若為一個類寫了多個構建器,那麼經常都需要在一個構建器里調用另一個構建器,以避免寫重復的代碼。可用this關鍵字做到這一點。
通常,當我們說this的時候,都是指「這個對象」或者「當前對象」。而且它本身會產生當前對象的一個句柄。在一個構建器中,若為其賦予一個自變數列表,那麼this關鍵字會具有不同的含義:它會對與那個自變數列表相符的構建器進行明確的調用。這樣一來,我們就可通過一條直接的途徑來調用其他構建器。如下所示:
其中,構建器Flower(String s,int petals)向我們揭示出這樣一個問題:盡管可用this調用一個構建器,但不可調用兩個。除此以外,構建器調用必須是我們做的第一件事情,否則會收到編譯程序的報錯信息。
這個例子也向大家展示了this的另一項用途。由於自變數s的名字以及成員數據s的名字是相同的,所以會出現混淆。為解決這個問題,可用this.s來引用成員數據。經常都會在Java代碼里看到這種形式的應用,本書的大量地方也採用了這種做法。
在print()中,我們發現編譯器不讓我們從除了一個構建器之外的其他任何方法內部調用一個構建器。

Ⅷ java this關鍵字問題

一、this關鍵字主要有三個應用:
(1)this調用本類中的屬性,也就是類中的成員變數;
(2)this調用本類中的其他方法;
(3)this調用本類中的其他構造方法,調用時要放在構造方法的首行。
Public Class Student {
String name; //定義一個成員變數name
private void SetName(String name) { //定義一個參數(局部變數)name
this.name=name; //將局部變數的值傳遞給成員變數
}
}
應用一:引用成員變數
如上面這段代碼中,有一個成員變數name,同時在方法中有一個形式參數,名字也是name,然後在方法中將形式參數name的值傳遞給成員變數name,雖然我們可以看明白這個代碼的含義,但是作為Java編譯器它是怎麼判斷的呢?到底是將形式參數name的值傳遞給成員變數name,還是反過來將成員變數name的值傳遞給形式參數name呢?也就是說,兩個變數名字如果相同的話,那麼Java如何判斷使用哪個變數?此時this這個關鍵字就起到作用了。this這個關鍵字其代表的就是對象中的成員變數或者方法。也就是說,如果在某個變數前面加上一個this關鍵字,其指的就是這個對象的成員變數或者方法,而不是指成員方法的形式參數或者局部變數。為此在上面這個代碼中,this.name代表的就是對象中的成員變數,又叫做對象的屬性,而後面的name則是方法的形式參數,代碼this.name=name就是將形式參數的值傳遞給成員變數。這就是上面這個代碼的具體含義。
一般情況下,在Java語言中引用成員變數或者成員方法都是以對象名.成員變數或者對象名.成員方法的形式。不過有些程序員即使在沒有相同變數的時候,也喜歡使用this.成員變數的形式來引用變數,這主要是從便於代碼的閱讀考慮的。一看到這個this關鍵字就知道現在引用的變數是成員變數或者成員方法,而不是局部變數。這無形中就提高了代碼的閱讀性。不過話說回來,這是this關鍵字在Java語言中的最簡單的應用。從這個應用中,我們可以看出this關鍵字其代表的就是對象的名字。
其實如果是局部變數的話,也是相同的道理。如在上面的代碼中,name不是形式參數,而是一個局部變數。此時Java也會遇到相同的疑惑,即變數名name代表的到底是局部變數還是形式參數?name=name到底代表的是什麼含義?根據局部變數的作用域,在方法內部,如果局部變數與成員變數同名的話,那麼是以局部變數為准。可是在name=name這個賦值語句中,將局部變數的值賦值給自己,顯然並不是很合適。根據代碼的含義,本來的意思應該是將局部變數賦值給成員變數。為了更清晰的表達這個含義,為此最好採用如下的書寫格式this.name=name。這里的this關鍵字含義就是對象名student,為此this.name就表示student.name。
應用二:調用類的構造方法
public class Student { //定義一個類,類的名字為student。
public Student() { //定義一個方法,名字與類相同故為構造方法
this(「Hello!」);
}
public Student(String name) { //定義一個帶形式參數的構造方法
}
}
this關鍵字除了可以調用成員變數之外,還可以調用構造方法。在一個Java類中,其方法可以分為成員方法和構造方法兩種。構造方法是一個與類同名的方法,在Java類中必須存在一個構造方法。如果在代碼中沒有顯示的體現構造方法的話,那麼編譯器在編譯的時候會自動添加一個沒有形式參數的構造方法。這個構造方法跟普通的成員方法還是有很多不同的地方。如構造方法一律是沒有返回值的,而且也不用void關鍵字來說明這個構造方法沒有返回值。而普通的方法可以有返回值、也可以沒有返回值,程序員可以根據自己的需要來定義。不過如果普通的方法沒有返回值的話,那麼一定要在方法定義的時候採用void關鍵字來進行說明。其次構造方法的名字有嚴格的要求,即必須與類的名字相同。也就是說,Java編譯器發現有個方法與類的名字相同才把其當作構造方法來對待。而對於普通方法的話,則要求不能夠與類的名字相同,而且多個成員方法不能夠採用相同的名字。在一個類中可以存在多個構造方法,這些構造方法都採用相同的名字,只是形式參數不同。Java語言就憑形式參數不同來判斷調用那個構造方法。
在上面這段代碼中,定義了兩個構造方法,一個帶參數,另一個沒有帶參數。構造方法都不會有返回值,不過由於構造方法的特殊性,為此不必要在構造方法定義時帶上void關鍵字來說明這個問題。在第一個沒有帶參數的構造方法中,使用了this(「Hello!」)這句代碼,這句代碼表示什麼含義呢?在構造方法中使this關鍵字表示調用類中的構造方法。如果一個類中有多個構造方法,因為其名字都相同,跟類名一致,那麼這個this到底是調用哪個構造方法呢?其實,這跟採用其他方法引用構造方法一樣,都是通過形式參數來調用構造方法的。如上例中,this關鍵字後面加上了一個參數,那麼就表示其引用的是帶參數的構造方法。如果現在有三個構造方法,分別為不帶參數、帶一個參數、帶兩個參數。那麼Java編譯器會根據所傳遞的參數數量的不同,來判斷該調用哪個構造方法。從上面示例中可以看出,this關鍵字不僅可以用來引用成員變數,而且還可以用來引用構造方法。
不過如果要使用這種方式來調用構造方法的話,有一個語法上的限制。一般來說,利用this關鍵字來調用構造方法,只有在無參數構造方法中第一句使用this調用有參數的構造方法。否則的話,翻譯的時候,就會有錯誤信息。這跟引用成員變數不同。如果引用成員變數的話,this關鍵字是沒有位置上的限制的。如果不熟悉這個限制的話,那麼還是老老實實的採用傳統的構造方法調用方式為好。雖然比較麻煩,但是至少不會出錯。
應用三:返回對象的值
this關鍵字除了可以引用變數或者成員方法之外,還有一個重大的作用就是返回類的引用。如在代碼中,可以使用return this,來返回某個類的引用。此時這個this關鍵字就代表類的名稱。如代碼在上面student類中,那麼代碼代表的含義就是return student。可見,這個this關鍵字除了可以引用變數或者成員方法之外,還可以作為類的返回值,這才是this關鍵字最引人注意的地方。

熱點內容
編譯選項立即綁定未定義符號 發布:2025-05-16 20:55:13 瀏覽:905
linuxmysql慢日誌 發布:2025-05-16 20:47:58 瀏覽:270
村兩委有哪些配置 發布:2025-05-16 20:34:47 瀏覽:292
我的世界有什麼伺服器好玩的 發布:2025-05-16 20:28:57 瀏覽:482
c語言按位與運算 發布:2025-05-16 20:24:10 瀏覽:753
蘋果手機如何修改密碼安全 發布:2025-05-16 20:23:34 瀏覽:193
圖片文字識別演算法 發布:2025-05-16 20:21:54 瀏覽:45
校園ftp伺服器 發布:2025-05-16 20:19:38 瀏覽:71
數據加密技術的實現 發布:2025-05-16 20:12:49 瀏覽:158
華為p9擴存儲 發布:2025-05-16 20:03:22 瀏覽:414