大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國(guó)咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 詳解this關(guān)鍵字

詳解this關(guān)鍵字

更新時(shí)間:2020-11-18 17:23:11 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1018次

this關(guān)鍵字是我們?cè)趯W(xué)習(xí)Java中接觸的為數(shù)不多的十分重要的關(guān)鍵字,無(wú)論是在Java面試題中還是實(shí)際的項(xiàng)目中都會(huì)經(jīng)常遇到,因此,this關(guān)鍵字是我們學(xué)習(xí)Java的必修課。


this關(guān)鍵字表示當(dāng)前這個(gè)對(duì)象,也就是說(shuō)當(dāng)前誰(shuí)調(diào)用該方法則這個(gè)對(duì)象就是誰(shuí)。每個(gè)對(duì)象都可以使用this關(guān)鍵字訪問其自身的引用,this引用可以隱式的或顯示的調(diào)用該方法的對(duì)象的實(shí)例變量和其他方法,this的參考名稱并不屬于實(shí)體變量,事實(shí)上在調(diào)用本對(duì)象方法時(shí),this當(dāng)成一個(gè)隱形的參數(shù)傳給這個(gè)方法。

下面我們就來(lái)一一介紹this關(guān)鍵字的用法:


一、當(dāng)成員變量和局部變量重名時(shí),在方法中使用this時(shí),表示的是該方法所在類中的成員變量。(this是當(dāng)前對(duì)象自己)

public class Hello {

String s = "Hello";//這里的S與Hello()方法里面的成員變量重名

public Hello(String s) {

System.out.println("s = " + s);

System.out.println("1 -> this.s = " + this.s);

this.s = s;//把參數(shù)值賦給成員變量,成員變量的值改變

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);//驗(yàn)證成員變量值的改變

}

}

結(jié)果為:s = HelloWorld!

1 -> this.s = Hello

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


二、把自己當(dāng)作參數(shù)傳遞時(shí),也可以用this.(this作當(dāng)前參數(shù)進(jìn)行傳遞)

class A {

public A() {

new B(this).print();// 調(diào)用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();//調(diào)用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();

}

}

結(jié)果為:

HelloAA from A!

HelloAB from B!

HelloAA from A!

HelloAA from A!

HelloAB from B!

在這個(gè)例子中,對(duì)象A的構(gòu)造函數(shù)中,用new B(this)把對(duì)象A自己作為參數(shù)傳遞給了對(duì)象B的構(gòu)造函數(shù)。


三、當(dāng)在匿名類中用this時(shí),這個(gè)this則指的是匿名類或內(nèi)部類本身。

這時(shí)如果我們要使用外部類的方法和變量的話,則應(yīng)該加上外部類的類名。如:

public class HelloB {

int i = 1;

public HelloB() {

Thread thread = new Thread() {

public void run() {

for (int j=0;j<20;j++) {

HelloB.this.run();//調(diào)用外部類的方法

try {

sleep(1000);

} catch (InterruptedException ie) {

}

}

}

}; // 注意這里有分號(hào)

thread.start();

}

public void run() {

System.out.println("i = " + i);

i++;

}

public static void main(String[] args) throws Exception {

new HelloB();

}

}

在上面這個(gè)例子中, thread 是一個(gè)匿名類對(duì)象,在它的定義中,它的 run 函數(shù)里用到了外部類的 run 函數(shù)。這時(shí)由于函數(shù)同名,直接調(diào)用就不行了。這時(shí)有兩種辦法,一種就是把外部的 run 函數(shù)換一個(gè)名字,但這種辦法對(duì)于一個(gè)開發(fā)到中途的應(yīng)用來(lái)說(shuō)是不可取的。那么就可以用這個(gè)例子中的辦法用外部類的類名加上 this 引用來(lái)說(shuō)明要調(diào)用的是外部類的方法 run。


四、在構(gòu)造函數(shù)中,通過this可以調(diào)用同一類中別的構(gòu)造函數(shù)。如:

public class ThisTest {

ThisTest(String str) {

System.out.println(str);

}

ThisTest() {

this("this測(cè)試成功!");

}

public static void main(String[] args) {

ThisTest thistest = new ThisTest();

}

}

為了更確切的說(shuō)明this用法,另外一個(gè)例子為:

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測(cè)試成功",25);

}

}

結(jié)果為:this測(cè)試成功25

值得注意的是:

1:在構(gòu)造調(diào)用另一個(gè)構(gòu)造函數(shù),調(diào)用動(dòng)作必須置于最起始的位置。

2:不能在構(gòu)造函數(shù)以外的任何函數(shù)內(nèi)調(diào)用構(gòu)造函數(shù)。

3:在一個(gè)構(gòu)造函數(shù)內(nèi)只能調(diào)用一個(gè)構(gòu)造函數(shù)。這一點(diǎn)在第二個(gè)構(gòu)造方法內(nèi)可以看到,第一個(gè)this(str),第二個(gè)為this.age=age;


五、this同時(shí)傳遞多個(gè)參數(shù)

public class TestClass {

int x;

int y;

static void showtest(TestClass tc) {//實(shí)例化對(duì)象

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();

}

}

結(jié)果為:9 10


希望大家可以通過上面對(duì)this關(guān)鍵字的介紹和用法實(shí)例的學(xué)習(xí),可以在今后的Java學(xué)習(xí)和編程中熟練使用this關(guān)鍵字。在本站的Java SE教程中有著對(duì)眾多Java關(guān)鍵字的全方位解讀,感興趣的小伙伴不容錯(cuò)過哦。


提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 精品一区精品二区 | 国产目拍亚洲精品区一区 | 色五月天天 | 91孕妇精品一区二区三区 | 国产97色在线 | 免费 | 国产成人综合亚洲欧洲色就色 | 毛色毛片免费观看 | 亚洲精品99久久久久中文字幕 | 欧美国产大片 | 欧美国产一区二区 | 热热99| 999久久狠狠免费精品 | 欧美午夜性春 | 在线视频中文字幕 | 天天曰夜夜操 | 婷婷激情视频 | 久久福利小视频 | 久久国产高清视频 | 欧美性狂猛bbbbbbxxxx | 欧美视频日韩专区午夜 | 欧美一级aⅴ毛片 | 尹人香蕉99久久综合网站 | 97精品国产综合久久久久久欧美 | 国产精品国产三级国产a | 福利在线视频一区热舞 | 国产一级做a爱免费视频 | 五月网婷婷 | 亚洲视频在线观看免费视频 | 特级毛片在线播放 | 一区二区三区四区免费视频 | 日本狠狠操 | 激情综合色综合啪啪开心 | 国产成在线观看免费视频成本人 | 五月色综合 | 亚洲精品在线视频观看 | 四虎免费在线播放 | 老司机永久免费网站在线观看 | 曰本人一级毛片免费完整视频 | 国产99视频精品草莓免视看 | 九九久久免费视频 | 看a网址 |