成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Javafinal的用法有哪些

這篇文章主要介紹“Java final的用法有哪些”,在日常操作中,相信很多人在Java final的用法有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java final的用法有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

創(chuàng)新互聯(lián)專業(yè)提供香港機(jī)房服務(wù)器托管服務(wù),為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買香港機(jī)房服務(wù)器托管服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。

“談?wù)刦inal、finally、finalize有什么不同?”

這是個(gè)非常經(jīng)典的問題。

finally是Java保證重點(diǎn)代碼一定要被執(zhí)行的一種機(jī)制。

finalize是基礎(chǔ)類java.lang.Object的一個(gè)方法,它的設(shè)計(jì)目的是保證對(duì)象在被垃圾收集前完成特定資源的回收。

今天我們重點(diǎn)談?wù)刦inal,多年的面試經(jīng)驗(yàn)告訴我,很多人其實(shí)失分就是在final上,而非另外兩者。final可以用來修飾類、方法、變量,分別有不同的意義。

1.final修飾的class代表不可被繼承擴(kuò)展;

2.final修改的方法表示不可被重寫(override);

3.final修飾的變量是不可被修改的。

如果你能夠給出上面的回答,至少及格了。但是這樣的回答隱藏掉了很多信息,這里真正有變化的是當(dāng)final修飾變量的時(shí)候。

首先,以上敘述還不夠準(zhǔn)確,精確地說“final修飾的變量一旦被賦值將不可被修改”。

請(qǐng)看如下代碼:

public class MyClass { public MyClass(int foo) { this.foo = foo; } private final foo; }

在這段代碼中類MyClass的成員變量foo被修飾為final,但并沒有對(duì)其賦值,而是在構(gòu)造函數(shù)中為其指定的取值。

當(dāng)然你不能就此認(rèn)為“final修飾的變量是不可被修改的”說法錯(cuò)誤,但至少?zèng)]有表達(dá)出這層意思。

其實(shí)Java語言這樣設(shè)計(jì)是有道理的,利用這一特性可以達(dá)到這樣的目的:當(dāng)我們發(fā)明一個(gè)類的時(shí)候,有時(shí)會(huì)發(fā)現(xiàn)有一些需要外部傳入的參數(shù),我們希望一旦被確定后,在對(duì)象被銷毀之前不希望其被改變。遇到這種情況,我們就可以將這些參數(shù)定義為final的成員變量,然后外界只能夠通過構(gòu)造函數(shù)的參數(shù)指定。

final是否可以用來修飾函數(shù)參數(shù)或者內(nèi)部變量?

答案是肯定的。事實(shí)上這種行為是被推薦的,因?yàn)檫@樣可以確保變量不會(huì)被意外修改。而且被final修飾過的變量與參數(shù)還可以被傳遞給匿名類,例如:

Java final的用法有哪些

Java在實(shí)現(xiàn)內(nèi)部類時(shí),實(shí)際會(huì)拷貝一份,不是去直接使用局部變量,final在這里可以防止出現(xiàn)數(shù)據(jù)一致性的問題。

外界有很多文章或者數(shù)據(jù)中還會(huì)介紹,final也許會(huì)有性能的好處。

比如,利用final可能有助于JVM將方法進(jìn)行內(nèi)聯(lián),可以改善編譯器進(jìn)行條件編譯的能力等等。

坦白說,很多類似的結(jié)論都是基于假設(shè)得出的,比如現(xiàn)在高性能JVM(如HotSpot)判斷內(nèi)聯(lián)未必依賴final的提示,要相信JVM還是非常智能的。

類似的,final變量對(duì)性能的影響,大部分情況下,并沒有考慮的必要。不要指望這樣的小技巧帶來所謂的性能好處。相反,使用final更重要的理由,應(yīng)該是為提高代碼可讀性,防止變量被意外修改。

***還要強(qiáng)調(diào),final雖然會(huì)帶來不可變的效果,但并不意味著任何情況下都是如此。比如final修飾java.util.List類型的變量,并不會(huì)防止列表內(nèi)容被修改。實(shí)際的效果是防止變量指向的List對(duì)象不會(huì)被再次創(chuàng)建。而如果你需要的是一個(gè)不允許修改的List,則可以使用Collections.unmodifiableList()得到。

到此,關(guān)于“Java final的用法有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

本文標(biāo)題:Javafinal的用法有哪些
文章起源:http://jinyejixie.com/article4/poedoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)頁設(shè)計(jì)公司網(wǎng)站設(shè)計(jì)公司網(wǎng)站導(dǎo)航、標(biāo)簽優(yōu)化網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
昭苏县| 云南省| 娱乐| 军事| 茶陵县| 泸西县| 安新县| 汤原县| 定结县| 福建省| 无锡市| 松原市| 徐汇区| 民乐县| 南昌市| 陵水| 句容市| 信丰县| 阿拉善右旗| 昌都县| 荥经县| 池州市| 石泉县| 永嘉县| 曲靖市| 通辽市| 岐山县| 左云县| 雅安市| 紫阳县| 乌拉特中旗| 太湖县| 丰都县| 双柏县| 阿图什市| 宁安市| 成都市| 营山县| 忻城县| 南岸区| 英山县|