自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java基礎(chǔ)卻常被忽略:全面講解this的實(shí)戰(zhàn)技巧!

開發(fā) 前端
通過今天的學(xué)習(xí),我們知道了 this 的四種常見用法:區(qū)分成員變量和局部變量。在構(gòu)造方法中調(diào)用其他構(gòu)造方法。實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用。作為參數(shù)傳遞。

大家好,我是小米,一個(gè)熱愛分享技術(shù)的 29 歲程序員。最近,一位朋友跟我訴苦,說他參加了一場 Java 社招面試,面試官問了一個(gè)看似簡單卻讓人抓狂的問題——“請講講 this 關(guān)鍵字的用法?!?/p>

“這不是基礎(chǔ)到不能再基礎(chǔ)的問題嗎?居然問這個(gè)!”朋友心里這么想,但冷靜下來才發(fā)現(xiàn),雖然每天用 this,但真要系統(tǒng)解釋卻有點(diǎn)卡殼。于是,我決定整理一篇文章,幫大家理清楚 this 的各種妙用,順便解答幾個(gè)常見的面試陷阱。

this 是什么?

this 是 Java 中的一個(gè)關(guān)鍵字,簡單說,它代表當(dāng)前對象的引用。當(dāng)我們在類中調(diào)用它時(shí),this 指向當(dāng)前類的實(shí)例。它的主要作用包括:

  • 區(qū)分類的成員變量和局部變量。
  • 在構(gòu)造方法中調(diào)用其他構(gòu)造方法。
  • 返回當(dāng)前對象(鏈?zhǔn)秸{(diào)用)。
  • 作為參數(shù)傳遞。

來看幾個(gè)場景化的例子,理解它的用法。

區(qū)分成員變量和局部變量

先來看一個(gè)場景,小明是個(gè)初級開發(fā),剛寫完以下代碼:

圖片圖片

小明很疑惑,為什么他調(diào)用setName("小米") 后,getName() 返回的還是null?其實(shí)問題出在name = name;這行代碼。

這里的兩個(gè) name 指的是同一個(gè)局部變量!如果想賦值給類的成員變量,必須用 this 來指明。

正確代碼如下:

圖片圖片

這就是 this 的最基礎(chǔ)用法之一:區(qū)分同名變量。

在構(gòu)造方法中調(diào)用其他構(gòu)造方法

接下來,假設(shè)你要寫一個(gè) Person 類,有多個(gè)構(gòu)造方法。面試官可能會(huì)問:“如何避免構(gòu)造方法中代碼重復(fù)?”

用 this 來調(diào)用另一個(gè)構(gòu)造方法就是最佳答案!

來看代碼:

圖片圖片

上面的代碼中,this(name, 0)調(diào)用了第二個(gè)構(gòu)造方法。這樣既減少了重復(fù)代碼,又方便統(tǒng)一管理邏輯。

注意:

  • 構(gòu)造方法中調(diào)用其他構(gòu)造方法時(shí),this 必須是方法的第一行。
  • 不允許循環(huán)調(diào)用構(gòu)造方法,否則會(huì)編譯錯(cuò)誤。

支持鏈?zhǔn)秸{(diào)用

面試中,很多人會(huì)提到鏈?zhǔn)秸{(diào)用。比如我們希望下面的代碼可以運(yùn)行:

圖片圖片

實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用的關(guān)鍵就在于方法返回 this。代碼如下:

圖片圖片

通過返回this,我們可以在一個(gè)語句中完成多個(gè)調(diào)用,大大提升代碼的可讀性和優(yōu)雅度。

作為參數(shù)傳遞

有時(shí)候,我們希望把當(dāng)前對象傳遞給另一個(gè)方法或?qū)ο?,這時(shí)候 this 就派上用場了!

比如,有一個(gè) Printer 類,負(fù)責(zé)打印對象的信息。我們可以這樣實(shí)現(xiàn):

圖片圖片

調(diào)用person.print()時(shí),this 會(huì)將當(dāng)前對象傳遞給Printer 的print 方法,從而實(shí)現(xiàn)打印。

面試陷阱:this 的幾個(gè)誤區(qū)

1. 靜態(tài)方法中能不能使用 this?

不能!因?yàn)殪o態(tài)方法是屬于類的,而 this 是屬于實(shí)例的。在靜態(tài)方法中,this 根本不存在。

錯(cuò)誤示例:

圖片圖片

2. this 可以出現(xiàn)在匿名內(nèi)部類中嗎?

可以!但是要注意 this 的含義。

匿名內(nèi)部類中,this 指的是匿名類實(shí)例,而不是外部類實(shí)例。如果需要引用外部類,可以用 外部類名.this 的方式。

示例代碼:

圖片圖片

總結(jié)

通過今天的學(xué)習(xí),我們知道了 this 的四種常見用法:

  • 區(qū)分成員變量和局部變量。
  • 在構(gòu)造方法中調(diào)用其他構(gòu)造方法。
  • 實(shí)現(xiàn)鏈?zhǔn)秸{(diào)用。
  • 作為參數(shù)傳遞。

同時(shí),我們也提醒自己:靜態(tài)方法中不能使用 this,匿名內(nèi)部類中要注意 this 的指向。

責(zé)任編輯:武曉燕 來源: 軟件求生
相關(guān)推薦

2009-12-29 16:37:35

Ubuntu 9.10

2024-01-10 16:46:13

Kubernetes容器

2024-06-13 08:00:00

MySQLMySQLDump數(shù)據(jù)庫

2010-08-13 14:44:26

思科路由器IOS軟件

2024-06-27 08:41:21

2022-05-10 09:33:50

Pandas技巧代碼

2018-10-30 12:15:26

CDN網(wǎng)絡(luò)技巧

2009-08-26 08:42:09

思科認(rèn)證考試資料CCNA實(shí)戰(zhàn)技巧

2021-08-17 11:20:25

Vue前端技巧

2024-05-17 08:38:22

2009-12-24 16:15:17

2025-04-23 08:35:00

2024-10-10 14:50:02

編程Java開發(fā)

2025-02-13 08:06:54

2010-04-15 16:03:19

Hyper-V災(zāi)難恢復(fù)

2009-10-23 18:29:02

linux Debia

2013-09-29 10:37:32

2024-11-11 10:00:00

2024-08-30 14:21:04

2017-05-22 14:28:02

CreamVim用戶體驗(yàn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號