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

Java中final關(guān)鍵字的詳細解析

這篇文章主要講解了Java中final關(guān)鍵字的詳細解析,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。

六安網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

1 修飾屬性或者變量

無論屬性是基本類型還是引用類型,作用都是變量里面存放的“值”不可變

經(jīng)常和static關(guān)鍵字一起使用,作為常量

1 基本類型,變量放的是實實在在的值,如1,“abc”等

2 引用類型,變量放的是個地址,所以用final修飾引用類型變量指的是它里面的地址不能變,即它只能指向初始時指向的那個對象,而不關(guān)心指向的對象內(nèi)容的變化

所以修飾的變量必須被初始化

public static final String LOAN = "loan";
LOAN = new String("loan") //invalid compilation error

定義時

1 初始化塊中,但不可在靜態(tài)初始化塊中,靜態(tài)的final實例變量才可以在靜態(tài)初始化塊中

2 構(gòu)造方法中,但靜態(tài)final實例變量不可以在其中

3 final變量是只讀的

2 修飾方法

該方法可被繼承,但不許被任何子類重寫

當(dāng)調(diào)用final方法時,直接將方法主體插入到調(diào)用處,而不是進行方法調(diào)用,這樣能提高程序效率(內(nèi)聯(lián)機制)
如果你認為一個方法的功能已經(jīng)足夠完整了,子類中不需要改變的話,你可以聲明此方法為final
final方法比非final方法快,因為在編譯時候已靜態(tài)綁定了,不需要在運行時再動態(tài)綁定。

class PersonalLoan{ public final String getName(){  return "personal loan";
 }
} 
class CheapPersonalLoan extends PersonalLoan{ @Override
 public final String getName(){  return "cheap personal loan"; //compilation error: overridden method is final
 }
}

3 修飾類

使用final來修飾的類叫作final類

final類通常功能是完整的,不能被繼承

Java中有許多類是final的,譬如String, Interger以及其他包裝類

類不可以被繼承,但這并非表示final類的實例變量也不可變,除非給實例變量也增加final修飾

final class PersonalLoan{
} 
class CheapPersonalLoan extends PersonalLoan{ //compilation error: cannot inherit from final class
 }

一個類不可同時被abstract和final修飾

思考一個有趣的現(xiàn)象:

byte b1=1;byte b2=3;byte b3=b1+b2; //當(dāng)程序執(zhí)行到這一行的時候會出錯,因為b1、b2可以自動轉(zhuǎn)換成int類型的變量,運算時java虛擬機對它進行了轉(zhuǎn)換,結(jié)果導(dǎo)致把一個int賦值給bytefinal byte b1=1;final byte b2=3;byte b3=b1+b2; //不會出錯,相信你看了上面的解釋就知道原因了。

4 final關(guān)鍵字的好處

1 提高性能
JVM和Java應(yīng)用都會緩存final變量。

2 final變量可以安全的在多線程環(huán)境下進行共享,而不需要額外的同步開銷。

3 使用final關(guān)鍵字,JVM會對方法、變量及類進行優(yōu)化。

5 不可變類

創(chuàng)建不可變類要使用final關(guān)鍵字。不可變類是指它的對象一旦被創(chuàng)建了就不能被更改了。String是不可變類的代表。不可變類有很多好處,譬如它們的對象是只讀的,可以在多線程環(huán)境下安全的共享,不用額外的同步開銷等等。

6 其他重要知識點

不能夠?qū)inal變量再賦值

本地變量必須在聲明時賦值

在匿名類中所有變量都必須final

final關(guān)鍵字不同于finally關(guān)鍵字,后者用于異常處理

final關(guān)鍵字容易與finalize()方法搞混,后者是在Object類中定義的方法,是在垃圾回收之前被JVM調(diào)用的方法
接口中聲明的所有變量本身是final

final和abstract這兩個關(guān)鍵字反相關(guān),final類不能abstract

final方法在編譯階段綁定,稱為靜態(tài)綁定(static binding)

沒在聲明時初始化final變量的稱為空白final變量(blank final variable),須在構(gòu)造器中初始化,或調(diào)用this()初始化。不這么做的話,編譯器會報錯“final變量(變量名)需要進行初始化”

final變量就是常量,而且通常常量名要大寫
private final int COUNT = 10;

對于集合對象聲明為final指的是引用不能被更改,但是你可以向其中增加,刪除或者改變內(nèi)容。譬如:

private final List Loans = new ArrayList();list.add(“home loan”); //validlist.add("personal loan"); //validloans = new Vector(); //not valid

看完上述內(nèi)容,是不是對Java中final關(guān)鍵字的詳細解析有進一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前名稱:Java中final關(guān)鍵字的詳細解析
URL地址:http://jinyejixie.com/article28/ppicjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、App開發(fā)、云服務(wù)器、搜索引擎優(yōu)化靜態(tài)網(wǎng)站、網(wǎng)站制作

廣告

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

成都seo排名網(wǎng)站優(yōu)化
唐河县| 从化市| 东辽县| 宽城| 长寿区| 永宁县| 丹棱县| 凤翔县| 阿拉尔市| 合肥市| 扬州市| 申扎县| 新丰县| 闽侯县| 乌兰县| 宜州市| 浦县| 南通市| 汉沽区| 安陆市| 县级市| 福建省| 韶山市| 兴义市| 西吉县| 吉林省| 桓台县| 饶平县| 甘孜县| 汉中市| 原平市| 长子县| 徐水县| 台东市| 乐亭县| 徐水县| 奎屯市| 浦北县| 德清县| 集安市| 中阳县|