淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧

淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧

ID:30856107

大?。?2.93 KB

頁數(shù):6頁

時間:2019-01-03

淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧_第1頁
淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧_第2頁
淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧_第3頁
淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧_第4頁
淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧_第5頁
資源描述:

《淺析java中的final關(guān)鍵字-java開發(fā)java經(jīng)驗技巧》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、淺析Java中的final關(guān)鍵字-編程開發(fā)技術(shù)淺析Java中的final關(guān)鍵字原文出處:海了談到final關(guān)鍵字,想必很多人都不陌生,在使用匿名內(nèi)部類的時候可能會經(jīng)常用到final關(guān)鍵字。另外,Java中的String類就是一個final類,那么今天我們就來了解final這個關(guān)鍵字的用法。下而是本文的目錄大綱:-final關(guān)鍵字的基木用法二?深入理解final關(guān)鍵字若有不正之處,請多多諒解并歡迎指正。一.final關(guān)鍵字的基本用法在Java中,final關(guān)鍵字可以用來修飾類、方法和變量(包描成員變量和局部變量)。下面就從這三個方面來了解一下final關(guān)鍵字的基木用法。1?

2、修飾類當(dāng)用final修飾一個類時,表明這個類不能被繼承。也就是說,如果一個類你永遠不會讓他被繼承,就可以用final進行修飾。final類中的成員變量可以根據(jù)需耍設(shè)為final,但是要注意final類中的所有成員方法都會被隱式地指定為final方法。27891011121314153finalclassPeople{4~publicPeople(){5}}classManextendsPeopled同固類型Man不能成為終態(tài)類People的子類?1修畫用:。除去”Peooly的“終態(tài)“修飾符按*T2M以莪取焦扁在使用final修飾類的時候,要注意謹慎選擇,除非這個類真的在

3、以后不會用來繼承或者出于安全的考慮,盡量不要將類設(shè)計為final類。2?修飾方法下面這段話摘自《Java編程思想》第四版第143頁:“使用fiwl方法的原因有兩個。第一個原因是把方法鎖定,以防任何繼承類修改它的含義;第二個原因是效率。在早期的Java實現(xiàn)版本中,會將final方法轉(zhuǎn)為內(nèi)嵌調(diào)用。但是如果方法過于龐大,可能看不到內(nèi)嵌調(diào)用帶來的任何性能提升。在最近的Java版木屮,不需要使用final方法進行這些優(yōu)化了。“因此,如果只有在想明確禁止該方法在子類中被覆蓋的情況下才將方法設(shè)置為final的。注:類的private方法會隱式地被指定為final方法。3?修飾變量修飾變

4、量是final用得最多的地方,也是本文接下來要重點闡述的內(nèi)容。首先了解一下final變量的基本語法:對于一個final變量,如果是基本數(shù)據(jù)類型的變量,則其數(shù)值一旦在初始化Z后便不能更改;如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。舉個例子:1213classMan{privatefinalinti=0;Bl5'-'publicMan(){J16i=2;?17finalObjectobj=newObject();^18obj=newObject();

5、19}20}上面的一段代碼中,對變量i和obj的重新賦值都報錯了。二.深入理解final關(guān)鍵字在了解

6、了fiwl關(guān)鍵字的基本用法Z后,這一節(jié)我們來看一下final關(guān)鍵字容易混淆的地方。1.類的final變量和普通變量有什么區(qū)別?當(dāng)用final作用于類的成員變量時,成員變量(注意是類的成員變量,局部變量只需要保證在使用之/而被初始化賦值即可)必須在定義時或者構(gòu)造器中進行初始化賦值,而月.final變量一旦被初始化賦值Z后,就不能再被賦值了。那么final變量和普通變量到底有何區(qū)別呢?下面請看一個例子:publicclassTest{publicstaticvoidmeiin(String[]args)Stringa="hcllo2";finalStringb="hello"

7、;Stringd二〃hello〃;Stringc二b+2;Stringe=d+2;Systcm.out.println((a==c));System.out.printin((a==e));}}truefalse大家可以先想一下這道題的輸出結(jié)果。為什么笫一個比較結(jié)果為true,而第二個比較結(jié)果為fasleo這里面就是final變量和普通變量的區(qū)別了,當(dāng)final變量是基木數(shù)據(jù)類型以及String類型吋,如果在編譯期間能知道它的確切值,則編譯器會把它當(dāng)做編譯期常量使用。也就是說在用到該final變量的地方,相當(dāng)于直接訪問的這個常量,不需要在運行時確定。這種和C語言中的宏替換

8、有點像。因此在上而的一段代碼屮,由于變量b被final修飾,因此會被當(dāng)做編譯器常量,所以在使用到b的地方會直接將變量b替換為它的?值。而對于變量d的訪問卻需要在運行吋通過鏈接來進行。想必其屮的區(qū)別大家應(yīng)該明白了,不過要注意,只冇在編譯期間能確切知道final變量值的情況下,編譯器才會進行這樣的優(yōu)化,比如卜?面的這段代碼就不會進行優(yōu)化:publicclassTest{publicstaticvoidmain(String[]args){Stringa二〃hello2〃;finalStringb二getHello();String

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細閱讀文檔內(nèi)容,確認文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。