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

java中final關(guān)鍵字詳解及用法詳解

 更新時(shí)間:2025年06月13日 08:30:45   作者:EMO的月亮與六便士  
談到final關(guān)鍵字,想必很多人都不陌生,在使用匿名內(nèi)部類的時(shí)候可能會(huì)經(jīng)常用到final關(guān)鍵字,這篇文章主要介紹了java中final關(guān)鍵字詳解及用法的相關(guān)資料,需要的朋友可以參考下

前言

在Java中,final關(guān)鍵字用于限制類、方法和變量的可變性,確保代碼的安全性和清晰度。以下是其詳細(xì)作用及使用場(chǎng)景:

1. final修飾類

  • 作用:被final修飾的類不能被繼承,即不能有子類。
  • 使用場(chǎng)景
    • 防止類被擴(kuò)展或修改,例如StringInteger等不可變類。
    • 確保類的行為或安全性(如工具類)。
  • 示例
    final class ImmutableClass {
        // 類內(nèi)容
    }
    // 編譯錯(cuò)誤:無法繼承final類
    // class SubClass extends ImmutableClass {}
    

2. final修飾方法

  • 作用:被final修飾的方法不能被子類重寫(Override)
  • 使用場(chǎng)景
    • 確保方法邏輯在繼承體系中保持不變,避免子類修改關(guān)鍵行為。
    • 與性能優(yōu)化相關(guān)(早期Java版本可能內(nèi)聯(lián)final方法)。
  • 示例
    class Parent {
        final void criticalMethod() {
            System.out.println("關(guān)鍵方法,不可重寫");
        }
    }
    
    class Child extends Parent {
        // 編譯錯(cuò)誤:無法重寫final方法
        // @Override void criticalMethod() {}
    }
    

3. final修飾變量

final變量的值只能被賦值一次,之后不可修改。

3.1 成員變量(實(shí)例變量)

  • 必須初始化:可在聲明時(shí)、構(gòu)造方法或初始化塊中賦值。
  • 線程安全:正確初始化的final變量可安全發(fā)布到其他線程(JMM保證)。
  • 示例
    class MyClass {
        final int value;
        
        MyClass(int value) {
            this.value = value; // 必須在構(gòu)造方法中初始化
        }
    }
    

3.2 局部變量

  • 必須初始化:在聲明時(shí)或后續(xù)代碼中賦值一次。
  • 匿名內(nèi)部類訪問:在Java 8之前,匿名內(nèi)部類只能訪問final局部變量;Java 8+支持effectively final(實(shí)際不可變的變量)。
  • 示例
    void method() {
        final int localVar = 10;
        // localVar = 20; // 編譯錯(cuò)誤
    }
    

3.3 靜態(tài)變量(類變量)

  • 必須初始化:在聲明時(shí)或靜態(tài)初始化塊中賦值。
  • 常量定義:通常結(jié)合static final定義全局常量。
  • 示例
    class Constants {
        static final double PI = 3.14159;
    }
    

3.4 引用類型變量

  • 引用不可變:變量指向的對(duì)象不能改變,但對(duì)象內(nèi)部狀態(tài)可能可變。
  • 示例
    final StringBuilder sb = new StringBuilder("Hello");
    sb.append(" World"); // 合法,修改對(duì)象內(nèi)容
    // sb = new StringBuilder(); // 編譯錯(cuò)誤:引用不可變
    

4. final修飾參數(shù)

  • 作用:方法參數(shù)被final修飾后,方法內(nèi)不能修改其值。
  • 使用場(chǎng)景:防止參數(shù)被意外修改,提升代碼可讀性。
  • 示例
    void process(final int param) {
        // param = 5; // 編譯錯(cuò)誤
    }
    

5. final與性能

  • 內(nèi)聯(lián)優(yōu)化:早期Java版本可能對(duì)final方法或變量進(jìn)行內(nèi)聯(lián)優(yōu)化,但現(xiàn)代JVM通常自動(dòng)處理。
  • 代碼清晰性final更多用于明確設(shè)計(jì)意圖,而非強(qiáng)制優(yōu)化。

6. 注意事項(xiàng)

  • 不可變對(duì)象 ≠ final變量final確保引用不變,但對(duì)象內(nèi)容可能可變(如final List仍可增刪元素)。
  • final類中的方法:隱式為final,無需顯式聲明。
  • 權(quán)衡使用:過度使用final可能導(dǎo)致代碼僵化,需根據(jù)設(shè)計(jì)需求合理選擇。

總結(jié)

final關(guān)鍵字通過限制類、方法和變量的可變性,增強(qiáng)代碼的健壯性和可維護(hù)性。合理使用可明確設(shè)計(jì)意圖,防止意外修改,適用于常量定義、不可變類設(shè)計(jì)、線程安全等場(chǎng)景。理解其在不同上下文中的作用,能更高效地編寫可靠代碼。

到此這篇關(guān)于java中final關(guān)鍵字詳解及用法的文章就介紹到這了,更多相關(guān)java final關(guān)鍵字用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java八大經(jīng)典書籍 你看過幾本?

    java八大經(jīng)典書籍 你看過幾本?

    java八大經(jīng)典書籍,你看過幾本?本文為大家分享了java學(xué)習(xí)書單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Java實(shí)現(xiàn)在線五子棋對(duì)戰(zhàn)游戲(人機(jī)對(duì)戰(zhàn))

    Java實(shí)現(xiàn)在線五子棋對(duì)戰(zhàn)游戲(人機(jī)對(duì)戰(zhàn))

    這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)在線五子棋對(duì)戰(zhàn)游戲(人機(jī)對(duì)戰(zhàn)),文中的實(shí)現(xiàn)步驟講解詳細(xì),感興趣的可以嘗試一下
    2022-09-09
  • 詳解Spring中@Component和@Configuration的區(qū)別

    詳解Spring中@Component和@Configuration的區(qū)別

    一直有同學(xué)搞不清Spring中@Component和@Configuration這兩個(gè)注解有什么區(qū)別,所以這篇文章小編就給大家簡(jiǎn)單介紹一下@Component和@Configuration的區(qū)別,需要的朋友可以參考下
    2023-07-07
  • Spring IoC容器的初始化過程

    Spring IoC容器的初始化過程

    Spring IoC容器初始化分兩階段:加載配置生成BeanDefinition,處理PostProcessor修改定義,注冊(cè)PostProcessor增強(qiáng)初始化,實(shí)例化單例Bean并注入依賴,核心類包含BeanDefinition、BeanFactory、ApplicationContext,refresh()方法主導(dǎo)整個(gè)流程,實(shí)現(xiàn)依賴注入和AOP
    2025-08-08
  • springboot項(xiàng)目如何防止XSS攻擊

    springboot項(xiàng)目如何防止XSS攻擊

    XSS攻擊全稱跨站腳本攻擊,是一種在web應(yīng)用中的計(jì)算機(jī)安全漏洞,允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。本文介紹防止XSS攻擊的方法
    2021-06-06
  • Java實(shí)現(xiàn)定時(shí)備份文件

    Java實(shí)現(xiàn)定時(shí)備份文件

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)定時(shí)備份文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 使用springMVC通過Filter實(shí)現(xiàn)防止xss注入

    使用springMVC通過Filter實(shí)現(xiàn)防止xss注入

    這篇文章主要介紹了使用springMVC通過Filter實(shí)現(xiàn)防止xss注入的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java多線程之深入理解ReentrantLock

    Java多線程之深入理解ReentrantLock

    這篇文章主要介紹了Java多線程之深入理解ReentrantLock,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • MybatisPlus特殊查詢的實(shí)現(xiàn)介紹

    MybatisPlus特殊查詢的實(shí)現(xiàn)介紹

    這篇文章主要介紹了MybatisPlus查詢投影、聚合查詢、分組查詢、等值查詢、范圍查詢、模糊查詢、排序查詢,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序詳解

    java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序詳解

    這篇文章主要介紹了java數(shù)據(jù)結(jié)構(gòu)與算法之插入排序,結(jié)合實(shí)例形式分析了java插入排序的概念、分類、原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-05-05

最新評(píng)論

泸水县| 阿荣旗| 九江县| 儋州市| 台湾省| 泸定县| 确山县| 栖霞市| 宜都市| 莱阳市| 泰顺县| 北票市| 正镶白旗| 焦作市| 营口市| 株洲县| 乌苏市| 永泰县| 巴彦县| 藁城市| 万州区| 仪陇县| 浮梁县| 汪清县| 晋州市| 双峰县| 红桥区| 新龙县| 云霄县| 华宁县| 嘉鱼县| 姜堰市| 黄平县| 开鲁县| 南康市| 石屏县| 吕梁市| 绍兴县| 汉寿县| 类乌齐县| 磴口县|