成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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ù)傳遞。

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

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

this 是什么?

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

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

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

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

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

圖片圖片

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

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

正確代碼如下:

圖片圖片

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

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

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

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

來看代碼:

圖片圖片

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

注意:

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

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

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

圖片圖片

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

圖片圖片

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

作為參數(shù)傳遞

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

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

圖片圖片

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

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

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

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

錯誤示例:

圖片圖片

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ù)傳遞。

同時,我們也提醒自己:靜態(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ù)庫

2025-06-11 09:28:22

2010-08-13 14:44:26

思科路由器IOS軟件

2022-05-10 09:33:50

Pandas技巧代碼

2024-06-27 08:41:21

2009-08-26 08:42:09

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

2018-10-30 12:15:26

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

2025-05-14 08:20:00

Linux權(quán)限管理sudo

2024-05-17 08:38:22

2021-08-17 11:20:25

Vue前端技巧

2009-12-24 16:15:17

2024-10-10 14:50:02

編程Java開發(fā)

2025-04-23 08:35:00

2025-02-13 08:06:54

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

點(diǎn)贊
收藏

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

主站蜘蛛池模板: 久久av在线播放 | 成年网站在线观看 | 免费在线观看黄视频 | 国产精品视频97 | 欧美一级二级在线观看 | 九九热这里 | 蜜桃av一区二区三区 | 国产精品美女久久久久久免费 | 大伊人久久| 欧美精品一区在线 | 亚洲高清在线视频 | 99这里只有精品 | 亚洲欧美综合精品久久成人 | 国产精品爱久久久久久久 | 一本在线 | 日韩高清国产一区在线 | 久久精品国产久精国产 | 国产精品久久久久久久久久不蜜臀 | 日韩在线成人 | 欧美激情一区 | 九九亚洲| 毛片综合 | 国产在线小视频 | 麻豆久久久久 | 精品av久久久久电影 | 精品在线观看一区二区 | 日本午夜网 | 一区二区福利视频 | 天天操天天插 | 成年人在线视频 | 国产精品高潮呻吟久久 | 午夜精品一区二区三区在线视频 | 中文日韩在线 | 欧美精品在线一区 | www国产亚洲精品 | 欧美成人精品一区二区三区 | 午夜影院黄 | 一区二区三区四区免费视频 | 亚洲成av片人久久久 | 2019天天操 | 国产91色在线 | 亚洲 |