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