Java中final關鍵字的作用?

在Java中,final?關鍵字用于表示不可變性,具體作用取決于它修飾的目標(變量、方法或類)。以下是其核心作用:


1.?修飾變量(常量)

  • 基本類型變量:值不可更改(常量)。

    final int MAX_VALUE = 100;
    // MAX_VALUE = 200;  // 編譯錯誤,不能重新賦值

  • 引用類型變量:引用地址不可更改(但對象內部狀態可能可變)。

    final List<String> list = new ArrayList<>();
    list.add("Hello");  // 允許修改對象內容
    // list = new ArrayList<>();  // 編譯錯誤,不能重新賦值引用

  • 注意:必須在聲明時或構造方法/代碼塊中初始化。


2.?修飾方法

  • 禁止子類重寫:父類中的?final?方法不能被子類覆蓋。

    class Parent {final void show() { System.out.println("不可重寫"); }
    }
    class Child extends Parent {// void show() { }  // 編譯錯誤,不能重寫final方法
    }


3.?修飾類

  • 禁止繼承final?類不能被其他類繼承(如?StringInteger?等)。

    final class ImmutableClass { }
    // class SubClass extends ImmutableClass { }  // 編譯錯誤


4.?其他場景

  • 方法參數:參數在方法內不能被重新賦值(僅限引用地址)。

    void process(final int x) {// x = 10;  // 編譯錯誤
    }

  • 線程安全final?變量的初始化保證對其他線程可見(無需同步)。


關鍵區別總結

修飾目標作用
變量值/引用不可變
方法不可重寫
不可繼承

設計意義

  • 清晰性:明確標識不可變的設計意圖。

  • 安全性:防止意外修改(如常量、核心類庫)。

  • 性能優化:JVM可能對?final?進行優化(如內聯)。

通過合理使用?final,可以提升代碼的健壯性和可維護性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/77723.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/77723.shtml
英文地址,請注明出處:http://en.pswp.cn/web/77723.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

自動伴隨無人機說明文檔

自動伴隨無人機說明文檔 一、無人機參數二、能力說明三、操作流程3.1 模式定義3.2 啟動流程3.3 可調參數&#xff08;建議默認&#xff09; 四、特別注意五、最后 一、無人機參數 型號&#xff1a;S400視覺pro版軸距&#xff1a;400mm起飛重量&#xff1a;1300g額外載重&#…

53.[前端開發-JS實戰框架應用]Day04-Bootstrap入門到項目實戰

Bootstrap入門到實戰 1 認識Bootstrap 認識Bootstrap Bootstrap起源和歷史 Bootstrap3-5版本的區別 Bootstrap優缺點 學習Bootstrap的理由 2 Bootstrap安裝 Bootstrap4的安裝 方式一 : CDN <!DOCTYPE html> <html lang"en"> <head><meta cha…

C#:創建變量和類的實例

在 C# 編程中&#xff0c;類作為引用類型&#xff0c;創建其變量和實例涉及到內存分配等重要概念。以下為你詳細介紹創建類實例的步驟和相關操作。 類的聲明與變量聲明 類的聲明就像是創建類實例的藍圖。當我們聲明一個類后&#xff0c;就能夠創建該類的實例。類屬于引用類型…

<el-date-picker 設置記錄時間早于當前時間 (包含時分秒)

<el-date-picker 設置記錄時間早于當前時間 &#xff08;包含時分秒&#xff09; <el-date-pickerv-else-if"item.type datetime"v-model"state.ruleForm[item.key]"type"datetime":placeholder"item.title"format"YYYY-M…

Tailwind CSS 響應式設計解析(含示例)

本文內容&#xff1a; Tailwindcss V4 中如何使用響應式設計功能&#xff0c;包括默認斷點、自定義斷點、斷點范圍控制以及容器查詢的各種技巧&#xff0c;幫助你在不離開 HTML 的前提下優雅構建響應式頁面。 &#x1f31f; 默認斷點用法&#xff08;移動優先&#xff09; Tail…

生態修復項目管理軟件

在“雙碳”目標與生態文明建設的雙重驅動下&#xff0c;生態修復項目正成為全球環境治理的核心戰場。然而&#xff0c;礦山復綠、濕地修復、水土保持等工程往往面臨跨地域、多主體、長周期的管理難題——從數據分散到進度失控&#xff0c;從成本超支到風險頻發&#xff0c;傳統…

基于PyTorch的圖像分類特征提取與模型訓練文檔

概述 本代碼實現了一個基于PyTorch的圖像特征提取與分類模型訓練流程。核心功能包括&#xff1a; 使用預訓練ResNet18模型進行圖像特征提取 將提取的特征保存為標準化格式 基于提取的特征訓練分類模型 代碼結構詳解 1. 庫導入 import torch import torch.nn as nn import…

寫一個 Java 程序,用于將字符串中的指定子串替換為另一個子串

以下是一個 Java 程序&#xff0c;它可以將字符串中的指定子串替換為另一個子串。 public class SubstringReplacement {public static String replaceSubstring(String original, String oldSubstring, String newSubstring) {return original.replace(oldSubstring, newSubs…

Docker 容器雙網卡訪問物理雷達網絡教程

作者&#xff1a; 陳梓洋 環境&#xff1a; ubuntu 22.04lts 時間&#xff1a; 2025年4月29日 Docker 容器雙網卡訪問物理雷達網絡教程 這個教程適用于這樣的場景&#xff1a;容器保留原有 ROS 通信網絡&#xff08;如 bridge 網絡&#xff09;&#xff0c;同時需要訪問一個物…

AWS創建多塊盤并創建RAID0以及后增加空間

創建硬盤并掛載到EC2上,后查詢如下 [rootip-127-0-0-1 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS nvme0n1 259:0 0 40G 0 disk ├─nvme0n1p1 259:1 0 40G 0 part / ├─nvme0n1p127 259:2 0 1M 0 part └─nvme0n1p128 259:3 …

數據結構---單鏈表的增刪查改

前言&#xff1a; 經過了幾個月的漫長歲月&#xff0c;回頭時年邁的小編發現&#xff0c;數據結構的內容還沒有寫博客&#xff0c;于是小編趕緊停下手頭的活動&#xff0c;補上博客以洗清身上的罪孽 目錄 前言 概念&#xff1a; 單鏈表的結構 我們設定一個哨兵位頭節點給鏈…

XSS靶場實戰(工作wuwuwu)

knoxss knoxss Single Reflection Using QUERY of URL ——01 測試標簽 <script>alert(666666)</script>——02: " <h1>test</h1>沒有反應&#xff0c;查看源碼 現在需要閉合雙引號&#xff0c;我計劃還是先搞標簽 "><h1>tes…

基于 BERT 微調一個意圖識別(Intent Classification)模型

基于 BERT 微調一個意圖識別&#xff08;Intent Classification&#xff09;模型&#xff0c;你的意圖類別包括&#xff1a; 查詢天氣獲取新聞咨詢想聽音樂想添加備忘查詢備忘獲取家政服務結束對話增加音量減小音量其他 具體實現步驟&#xff08;詳細版&#xff09; 1. 準備你…

SSM書籍管理(環境搭建)

整合SSM&#xff1a;SpringSpringMVCMybatis 環境要求&#xff1a;IDEA、MySQL5、Tomcat9、Maven3 數據庫搭建 數據庫準備以下數據用于后續實驗&#xff1a;創建一個ssmbuild數據庫&#xff0c;表books&#xff0c;該表有4個字段&#xff0c;并且插入3條數據用于后續。 CRE…

API文檔生成與測試工具推薦

在API開發過程中&#xff0c;文檔的編寫和維護是一項重要但繁瑣的工作。為了提高效率&#xff0c;許多開發者會選擇使用API文檔自動生成工具或具備API文檔生成功能的API門戶產品。選擇能導入API文檔的工具生成測試腳本, 本文將全面梳理市面上符合OpenAPI 3.0規范的文檔生成工具…

linux修改環境變量

添加環境變量注意事項。 vim ~/.bashrc 添加環境變量時&#xff0c;需要source ~/.bashrc后才能有效。同時只對當前shell窗口有效&#xff0c;當打開另外的shell窗口時&#xff0c;需要重新source才能起效。 1.修改bashrc文件后 2.source后打開另一個shell窗口則無效&#xff…

springboot項目中,MySQL數據庫轉達夢數據庫

前言 前段時間&#xff0c;公司要求要把某幾個項目的數據庫換成達夢數據庫&#xff0c;說是為了國產化。我就挺無語的&#xff0c;三四年的項目了&#xff0c;現在說要換數據庫。我一開始以為這個達夢數據庫應該是和TIDB差不多的。 我之前做的好幾個項目部署到測試服、正式服…

【Quest開發】透視環境下摳出身體并能遮擋身體上的服裝

軟件&#xff1a;Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72 硬件&#xff1a;Meta Quest3 僅針對urp管線 博主搞這個主要是想做現實里的人的變身功能&#xff0c;最后效果如下 可以看到雖然身體是半透明的&#xff0c;但是裙子依舊被完全遮擋了 原理是參考…

前端安全中的XSS(跨站腳本攻擊)

XSS 類型 存儲型 XSS 特征&#xff1a;惡意腳本存儲在服務器&#xff08;如數據庫&#xff09;&#xff0c;用戶訪問受感染頁面時觸發。場景&#xff1a;用戶評論、論壇帖子等持久化內容。影響范圍&#xff1a;所有訪問該頁面的用戶。 反射型 XSS 特征&#xff1a;惡意腳本通過…

(第三篇)Springcloud之Ribbon負載均衡

一、簡介 1、介紹 Spring Cloud Ribbon是Netflix發布的開源項目&#xff0c;是基于Netflix Ribbon實現的一套客戶端負載均衡的工具。主要功能是提供客戶端的軟件負載均衡算法&#xff0c;將Netflix的中間層服務連接在一起。Ribbon客戶端組件提供一系列完善的配置項如連接超時&…