最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中final關(guān)鍵字的用法總結(jié)

 更新時間:2016年06月15日 10:12:17   作者:M_JCs  
在Java中,final可以別用來修飾類、修飾方法、修飾變量和修飾參數(shù)等,這里就來簡單作一個Java中final關(guān)鍵字的用法總結(jié):

1、final修飾類
被final修飾的類不能被繼承,因此final類的成員方法也不能被覆寫,被final關(guān)鍵字修飾的類沒有子類,因此類的實現(xiàn)細節(jié)也無法改變,無法被擴展。final類中的所有成員方法都會被隱式地指定為final方法,final類中的成員變量可以根據(jù)需要設(shè)為final。

2、final修飾方法
一個類中的方法如果被final關(guān)鍵字修飾,則其子類無法覆寫該方法,只能被子類繼承。如果父類中的某個方法不想被其子類所覆寫,可將該方法定義為final類型,另外,父類中的私有方法(即被private關(guān)鍵字修飾的方法)也不允許被子類所覆寫,所以父類中被private關(guān)鍵字修飾的方法默認為final類型,被final關(guān)鍵字修飾的方法有如下特質(zhì):

該方法被鎖定,可以防止任何繼承類修改它的意義和實現(xiàn);
高效。編譯器在遇到調(diào)用final方法時候會轉(zhuǎn)入內(nèi)嵌機制,大大提高執(zhí)行效率;
另外,使用final修飾的靜態(tài)方法在其所屬類的子類中不能被隱藏(hide);

3、final修飾變量
final這個關(guān)鍵字的含義是“這是無法改變的”或者“終態(tài)的”;
那么為什么要阻止改變呢?
java語言的發(fā)明者可能由于兩個目的而阻止改變:
A.效率問題:
jdk中的某些類的某些方法,是不允許被用戶覆蓋的,設(shè)計者可能認為,所用方法已經(jīng)是最好的方法,
 用戶私自覆蓋,或是由于疏忽而覆蓋,就會影響JVM或是系統(tǒng)的系能;
B.設(shè)計所需:
眾所周知,有些情況必須使用final關(guān)鍵字,比如方法中的匿名內(nèi)部類的參數(shù)傳遞。
有人說final變量在賦值后就不可變,
那么這個不變到底指的是什么呢?
這個不變指的是引用,是地址,而所引用的對象的內(nèi)容仍然是可變的。
就是說,這個final變量永遠指向某個對象,是一個常量指針,而不是指向常量的指針。
(1)被final關(guān)鍵字修飾的基本數(shù)據(jù)類型,則其數(shù)值一旦在初始化之后便不能更改;
(2)如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象,但該引用所指向的對象的內(nèi)容是可以發(fā)生變化的。原因為:引用數(shù)據(jù)類型存儲的引用對象在堆內(nèi)存中的地址,final修飾引用類型之后,要求該引用指向的堆內(nèi)存空間(或者說該引用存儲的堆內(nèi)存地址)不能改變。
當用final修飾類的非靜態(tài)成員變量時,成員變量的初始化有兩種方式:
(3)在聲明時進行初始化
(4)在聲明變量時可以不進行初始化,該變量被稱為blank final,即final空白,但是要在這個變量所在的類的所有的構(gòu)造方法中對這個變量賦初值。
當用final修飾類的靜態(tài)成員變量時,靜態(tài)成員變量的初始化方式也有兩種:
(5)在聲明時進行初始化
(6)在靜態(tài)初始化塊中進行初始化
當用final修飾接口的靜態(tài)變量時,其初始化方式只有一種:
(7)在聲明時進行初始化
當用final修飾局部成員變量時,只需要保證在使用之前被初始化賦值即可。
總之,被final關(guān)鍵字修飾的變量在聲明時可以不進行初始化,但必須保證該變量在使用之前被初始化,一旦被初始化賦值之后,就不能再被重新賦值了。試分析一下程序的輸出結(jié)果:

public class Test {
 public static void main(String[] args) {
   String a = "hello2"; 
   final String b = "hello";
   String d = "hello";
   String c = b + 2; 
   String e = d + 2;
   System.out.println((a == c));
   System.out.println((a == e));
 }
}

4、final修飾參數(shù)
當方法參數(shù)為final類型時,你可以讀取使用該參數(shù),但是無法改變該參數(shù)的值。該變量在方法調(diào)用時被創(chuàng)建,同時初始化為對應(yīng)實參值,在方法體(body)執(zhí)行結(jié)束前,其值不能改變。用final關(guān)鍵字修飾的基本數(shù)據(jù)類型的參數(shù),其參數(shù)值無法改變,用final關(guān)鍵字修飾的引用數(shù)據(jù)類型,無法是該引用指向其他對象或再次賦值為null,但可以使用該引用改變引用對象的內(nèi)容。final用于修飾參數(shù)的目的并非防止在調(diào)用的方法內(nèi)部對參數(shù)的操作改變方法外部對應(yīng)變量的值,只是防止在該方法內(nèi)對該參數(shù)進行重新賦值操作,影響該參數(shù)傳遞時的初始值。而且將方法中的參數(shù)用final關(guān)鍵字修飾并不能防止從方法外部所傳遞的參數(shù)的值的內(nèi)容不被改變。具體可參考final修飾引用數(shù)據(jù)類型的解釋。

相關(guān)文章

  • GraalVM和Spring Native嘗鮮一步步讓Springboot啟動飛起來66ms完成啟動

    GraalVM和Spring Native嘗鮮一步步讓Springboot啟動飛起來66ms完成啟動

    GraalVM是高性能的JDK,支持Java/Python/JavaScript等語言,它可以讓Java變成二進制文件來執(zhí)行,讓程序在任何地方運行更快,這篇文章主要介紹了GraalVM和Spring Native嘗鮮一步步讓Springboot啟動飛起來66ms完成啟動,需要的朋友可以參考下
    2023-02-02
  • Java中的==使用方法詳解

    Java中的==使用方法詳解

    這篇文章主要介紹了Java中“==”的使用方法,,==可以使用在基本數(shù)據(jù)類型變量和引用數(shù)據(jù)類型變量中,equals()是方法,只能用于引用數(shù)據(jù)類型,需要的朋友可以參考下
    2022-09-09
  • Java中String字符串轉(zhuǎn)具體對象的幾種常用方式

    Java中String字符串轉(zhuǎn)具體對象的幾種常用方式

    String對象可以用來存儲任何字符串類型的數(shù)據(jù),包括HTML、XML等格式的字符串,下面這篇文章主要給大家介紹了關(guān)于JavaString字符串轉(zhuǎn)具體對象的幾種常用方式,需要的朋友可以參考下
    2024-03-03
  • 基于Map的computeIfAbsent的使用場景和使用方式

    基于Map的computeIfAbsent的使用場景和使用方式

    這篇文章主要介紹了基于Map的computeIfAbsent的使用場景和使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • java如何獲取byte的高四位和低四位

    java如何獲取byte的高四位和低四位

    這篇文章主要介紹了java如何獲取byte的高四位和低四位,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • java按照模板導(dǎo)出pdf或word文件詳細代碼

    java按照模板導(dǎo)出pdf或word文件詳細代碼

    有時候業(yè)務(wù)中我們需要使用pdf模板生成一份pdf文件,下面這篇文章主要給大家介紹了關(guān)于java按照模板導(dǎo)出pdf或word文件的相關(guān)資料,文中給出了詳細的代碼示例,需要的朋友可以參考下
    2023-11-11
  • Java使用注解實現(xiàn)BigDecimal的四舍五入

    Java使用注解實現(xiàn)BigDecimal的四舍五入

    BigDecimal是Java中的一個類,位于java.math包中,它提供了任意精度的有符號十進制數(shù)字的表示,以及對這些數(shù)字進行算術(shù)運算的方法,本文介紹了Java使用注解實現(xiàn)BigDecimal的四舍五入的相關(guān)知識,需要的朋友可以參考下
    2024-09-09
  • idea中的update?project按鈕使用

    idea中的update?project按鈕使用

    這篇文章主要介紹了idea中的update?project按鈕使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • idea 2023.1字體設(shè)置及自動調(diào)整大小的圖文教程

    idea 2023.1字體設(shè)置及自動調(diào)整大小的圖文教程

    這篇文章主要介紹了idea 2023.1字體設(shè)置及自動調(diào)整大小的教程,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • Java實現(xiàn)連連看算法

    Java實現(xiàn)連連看算法

    這篇文章主要為大家詳細介紹了Java實現(xiàn)連連看算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06

最新評論

大安市| 石台县| 大悟县| 吉隆县| 库尔勒市| 甘孜县| 吴旗县| 青铜峡市| 尼勒克县| 大竹县| 汉川市| 诸暨市| 西乌| 察隅县| 都兰县| 昭苏县| 通江县| 海宁市| 阿拉善盟| 明星| 东兰县| 横峰县| 班玛县| 保康县| 乡宁县| 灌阳县| 盘锦市| 天等县| 赤峰市| 湄潭县| 五常市| 习水县| 涞源县| 古蔺县| 景东| 金坛市| 遂溪县| 于田县| 大石桥市| 南召县| 那曲县|