更新時(shí)間:2022-04-19 09:10:27 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1556次
動(dòng)力節(jié)點(diǎn)小編來(lái)給大家介紹一下Java里this的用法有哪些。
這里給出java this關(guān)鍵字的6種用法。
this 可用于引用當(dāng)前類(lèi)實(shí)例變量。
this 可用于調(diào)用當(dāng)前類(lèi)方法(隱式)
this() 可用于調(diào)用當(dāng)前類(lèi)的構(gòu)造函數(shù)。
這可以作為方法調(diào)用中的參數(shù)傳遞。
this 可以在構(gòu)造函數(shù)調(diào)用中作為參數(shù)傳遞。
this 可用于從方法返回當(dāng)前類(lèi)實(shí)例。
建議:如果你是java初學(xué)者,只查一下這個(gè)關(guān)鍵字的三種用法。
(1)this:引用當(dāng)前類(lèi)實(shí)例變量
this 關(guān)鍵字可用于引用當(dāng)前類(lèi)實(shí)例變量。如果實(shí)例變量和參數(shù)之間有歧義,這個(gè)關(guān)鍵字解決了歧義的問(wèn)題。
理解沒(méi)有這個(gè)關(guān)鍵字的問(wèn)題
如果我們不使用這個(gè)關(guān)鍵字,讓我們通過(guò)下面給出的示例來(lái)理解問(wèn)題:
班級(jí) 學(xué)生{
詮釋 rollno;
字符串名稱(chēng);
浮動(dòng) 費(fèi)用;
學(xué)生(int rollno,字符串名稱(chēng),浮動(dòng) 費(fèi)用){
卷號(hào)=卷號(hào);
名稱(chēng)=名稱(chēng);
費(fèi)用=費(fèi)用;
}
void display(){System.out.println(rollno+ " " +name+ " " +fee);}
}
類(lèi) TestThis1{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
學(xué)生 s1=新 學(xué)生(111 ,“ankit” ,5000f);
學(xué)生 s2=新 學(xué)生(112 ,“summit” ,6000f);
s1.display();
s2.display();
}}
輸出:
0 null 0.0
0 null 0.0
(2)this:調(diào)用當(dāng)前類(lèi)方法
您可以使用 this 關(guān)鍵字調(diào)用當(dāng)前類(lèi)的方法。如果不使用 this 關(guān)鍵字,編譯器會(huì)在調(diào)用方法時(shí)自動(dòng)添加 this 關(guān)鍵字。讓我們看看這個(gè)例子
A類(lèi) {
void m(){System.out.println( "你好 m" );}
無(wú)效 n(){
System.out.println( "你好 n" );
//m();//和this.m()一樣
這個(gè).m();
}
}
類(lèi) TestThis4{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
A a=新 A();
一個(gè)();
}}
輸出:
你好
你好,我
(3)this() : 調(diào)用當(dāng)前類(lèi)的構(gòu)造函數(shù)
this() 構(gòu)造函數(shù)調(diào)用可用于調(diào)用當(dāng)前類(lèi)構(gòu)造函數(shù)。它用于重用構(gòu)造函數(shù)。換句話說(shuō),它用于構(gòu)造函數(shù)鏈接。
從參數(shù)化構(gòu)造函數(shù)調(diào)用默認(rèn)構(gòu)造函數(shù):
A類(lèi) {
A(){System.out.println( "你好" );}
A( int x){
這個(gè)();
System.out.println(x);
}
}
類(lèi) TestThis5{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
A a=新 A( 10 );
}}
輸出:
你好一個(gè)
10
從默認(rèn)構(gòu)造函數(shù)調(diào)用參數(shù)化構(gòu)造函數(shù):
A類(lèi) {
一種(){
這( 5 );
System.out.println( "你好" );
}
A( int x){
System.out.println(x);
}
}
類(lèi) TestThis6{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
A a=新 A();
}}
輸出:
5
你好一個(gè)
this() 構(gòu)造函數(shù)調(diào)用的真實(shí)用法
應(yīng)該使用 this() 構(gòu)造函數(shù)調(diào)用來(lái)重用構(gòu)造函數(shù)中的構(gòu)造函數(shù)。它維護(hù)構(gòu)造函數(shù)之間的鏈,即它用于構(gòu)造函數(shù)鏈。讓我們看看下面給出的示例,該示例顯示了 this 關(guān)鍵字的實(shí)際用法。
班級(jí) 學(xué)生{
詮釋 rollno;
字符串名稱(chēng),課程;
浮動(dòng) 費(fèi)用;
學(xué)生(int rollno,字符串名稱(chēng),字符串課程){
這個(gè).rollno=rollno;
這個(gè).name=name;
這.course=課程;
}
Student( int rollno,String name,String course, float fee){
這(卷號(hào),名稱(chēng),課程);//重用構(gòu)造函數(shù)
這個(gè).fee=fee;
}
void display(){System.out.println(rollno+ " " +name+ " " +course+ " " +fee);}
}
類(lèi) TestThis7{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
學(xué)生 s1=新 學(xué)生(111 ,“ankit” ,“java” );
學(xué)生 s2=新 學(xué)生(112 ,“sumit” ,“java” ,6000f);
s1.display();
s2.display();
}}
輸出:
111 ankit java 0.0
112 sumit java 6000.0
規(guī)則:調(diào)用 this() 必須是構(gòu)造函數(shù)中的第一條語(yǔ)句。
班級(jí) 學(xué)生{
詮釋 rollno;
字符串名稱(chēng),課程;
浮動(dòng) 費(fèi)用;
學(xué)生(int rollno,字符串名稱(chēng),字符串課程){
這個(gè).rollno=rollno;
這個(gè).name=name;
這.course=課程;
}
Student( int rollno,String name,String course, float fee){
這個(gè).fee=fee;
這(卷號(hào),名稱(chēng),課程);//CT錯(cuò)誤
}
void display(){System.out.println(rollno+ " " +name+ " " +course+ " " +fee);}
}
類(lèi) TestThis8{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
學(xué)生 s1=新 學(xué)生(111 ,“ankit” ,“java” );
學(xué)生 s2=新 學(xué)生(112 ,“sumit” ,“java” ,6000f);
s1.display();
s2.display();
}}
輸出:
編譯時(shí)錯(cuò)誤:調(diào)用 this 必須是構(gòu)造函數(shù)中的第一條語(yǔ)句
(4)this: 在方法中作為參數(shù)傳遞
this 關(guān)鍵字也可以作為方法中的參數(shù)傳遞。它主要用于事件處理。讓我們看看這個(gè)例子:
S2 類(lèi){
無(wú)效 米(S2 對(duì)象){
System.out.println( "方法被調(diào)用" );
}
無(wú)效 p(){
米(這個(gè));
}
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
S2 s1 = 新 S2();
s1.p();
}
}
輸出:
方法被調(diào)用
可以作為參數(shù)傳遞的 this 的應(yīng)用:
在事件處理中(或)在我們必須提供一個(gè)類(lèi)對(duì)另一個(gè)類(lèi)的引用的情況下。它用于在許多方法中重用一個(gè)對(duì)象。
(5)this:在構(gòu)造函數(shù)調(diào)用中作為參數(shù)傳遞
我們也可以在構(gòu)造函數(shù)中傳遞 this 關(guān)鍵字。如果我們必須在多個(gè)類(lèi)中使用一個(gè)對(duì)象,這很有用。讓我們看看這個(gè)例子:
B類(lèi) {
A4 對(duì)象;
B(A4 對(duì)象){
這個(gè).obj=obj;
}
無(wú)效 顯示(){
System.out.println(obj.data); //使用A4類(lèi)的數(shù)據(jù)成員
}
}
A4 類(lèi){
整數(shù) 數(shù)據(jù)= 10 ;
A4(){
B b=新 B(這個(gè));
b.顯示();
}
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
A4 a=新 A4();
}
}
輸出:
10
(6)這個(gè)關(guān)鍵字可以用來(lái)返回當(dāng)前的類(lèi)實(shí)例
我們可以將此關(guān)鍵字作為方法中的語(yǔ)句返回。在這種情況下,方法的返回類(lèi)型必須是類(lèi)類(lèi)型(非原始)。讓我們看看這個(gè)例子:
可以作為語(yǔ)句返回的 this 的語(yǔ)法
返回類(lèi)型方法名稱(chēng)(){
返回這個(gè);
}
A類(lèi) {
一個(gè) getA(){
返回這個(gè);
}
void msg(){System.out.println( "Hello java" );}
}
類(lèi) 測(cè)試1{
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
新 的 A().getA().msg();
}
}
輸出:
你好java
讓我們證明這個(gè)Java關(guān)鍵字是指當(dāng)前類(lèi)的實(shí)例變量。在這個(gè)程序中,我們正在打印參考變量,這兩個(gè)變量的輸出是相同的。
A5 級(jí){
無(wú)效 米(){
System.out.println(這個(gè)); //打印相同的參考ID
}
公共靜態(tài)無(wú)效 主要(字符串參數(shù)[]){
A5 obj=新 A5();
System.out.println(obj); //打印參考ID
obj.m();
}
}
輸出:
A5@22b3ea59
A5@22b3ea59
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743