高級java每日一道面試題-2024年7月8日

文章目錄

  • 面試官問: final 在java中有什么作用
  • 面試者回答:
      • 1. final修飾變量
        • 基本數據類型:
          • 示例:
        • 對象引用:
          • 示例:
      • 2. final修飾方法
        • 示例:
      • 3. final修飾類
        • 示例:
      • 4. final局部變量和參數
        • 示例:
      • 總結

面試官問: final 在java中有什么作用

面試者回答:

在Java中,final 關鍵字是一個非常重要的修飾符,它用于指定某個變量的值一旦初始化之后就不能被改變(對于基本數據類型)或者某個對象的引用一旦指向某個對象之后就不能再指向其他對象(對于對象引用)。final 還可以用來修飾類和方法,但其在這些場景下的作用與修飾變量時有所不同。下面詳細解釋 final 在Java中的幾種用途:

1. final修飾變量

基本數據類型:
  • final 修飾一個基本數據類型的變量時,這個變量的值一旦被初始化之后就不能被改變。
示例:
final int MAX_VALUE = 100;
// MAX_VALUE = 200; // 這行代碼會編譯錯誤,因為MAX_VALUE是final的
對象引用:

final 修飾一個對象引用時,這個引用一旦指向某個對象之后就不能再指向其他對象,但是該對象本身是可以被修改的(如果對象是可變的)。

示例:
final List<String> list = new ArrayList<>();
// list = new ArrayList<>(); // 這行代碼會編譯錯誤,因為list是final的
list.add("Hello"); // 這是允許的,因為list對象本身是可變的

2. final修飾方法

final 修飾一個方法時,這個方法不能在子類中被覆蓋(重寫)。這通常用于確保方法的行為在整個繼承鏈中保持不變。

示例:
public class Parent {public final void show() {System.out.println("This is final method");}
}public class Child extends Parent {// @Override // 這行代碼會導致編譯錯誤,因為show()在Parent類中是final的public void show() {System.out.println("This will not override show()");}
}

3. final修飾類

final用于修飾一個類時,這個類不能被繼承。這通常用于防止類的繼承,確保類的完整性和封裝性。

示例:
public final class FinalClass {// 類實現
}

在這個例子中,FinalClass不能被其他類繼承。

4. final局部變量和參數

在方法內部,final可以用于修飾局部變量和方法參數,這意味著這些變量的引用不能改變。但是,如果局部變量是對象類型,那么final只保證了引用不變,對象的內容仍然可以修改。

示例:
public void test(final List<Integer> list) {// list = new ArrayList<>(); // 錯誤,不能重新賦值list.add(10); // 正確,改變了list的內容而不是引用
}

在這個例子中,list的引用不能改變,但是可以改變list的內容。

總結

  • final 關鍵字在Java中用于指定某些內容是不可變的,包括變量的值、方法的覆蓋以及類的繼承。
  • 對于基本數據類型的變量,final 確保其值不變;對于對象引用,final 確保引用不變但對象本身的狀態可以改變(如果對象是可變的)。
  • final 方法不能被覆蓋,final 類不能被繼承。
  • 使用 final 可以提高程序的穩定性和安全性,但也可能導致代碼的靈活性降低。因此,在使用時需要權衡利弊。

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

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

相關文章

互聯網十萬個為什么之什么是CDN?

CDN&#xff08;Content Delivery Network&#xff0c;內容分發網絡&#xff09;是一組分布在不同地理位置的服務器&#xff0c;其目的是更有效地向用戶分發互聯網內容。通過緩存內容&#xff08;如網頁、圖片、視頻和其他類型的網絡數據&#xff09;在多個服務器上&#xff0c…

學生護眼臺燈哪個牌子實用?值得入手的學生護眼臺燈十大排名分析

在這個數碼時代&#xff0c;人們對屏幕的依賴程度越來越高&#xff0c;尤其是孩子們。他們不僅在學校里需要長時間盯著教科書&#xff0c;還會在學習和娛樂中使用各種數碼設備。然而&#xff0c;這也使得眼睛健康問題逐漸凸顯&#xff0c;尤其是兒童近視的問題。為了保護視力&a…

Flink 提交作業的方式

參考&#xff1a; Flink運行方式及對比-騰訊云開發者社區-騰訊云

IP地址設置的全面指南-okeyproxy

IP地址是每個連接到互聯網的設備的唯一識別字&#xff0c;無論是家庭網路還是企業網路&#xff0c;正確設置IP地址是確保網路穩定和安全的關鍵。IP地址由一系列數字組成&#xff0c;通常分為IPv4和IPv6兩種格式。IPv4是最常見的形式&#xff0c;由四組0到255之間的數字組成&…

濟南網站建設費用為什么差距如此之大

濟南網站建設費用的差距之所以如此之大&#xff0c;主要是由于以下幾個因素的影響。 首先&#xff0c;不同的網站建設公司所提供的服務內容和質量不盡相同&#xff0c;這直接導致了費用的差距。一些知名的大型網絡公司會提供全方位的網站建設服務&#xff0c;包括網站設計、頁面…

ELFK 8.12.2 部署 -- docker部署方式?

&#x1f468;?&#x1f393;博主簡介 &#x1f3c5;CSDN博客專家 ??&#x1f3c5;云計算領域優質創作者 ??&#x1f3c5;華為云開發者社區專家博主 ??&#x1f3c5;阿里云開發者社區專家博主 &#x1f48a;交流社區&#xff1a;運維交流社區 歡迎大家的加入&#xff01…

SpringBoot源碼閱讀(3)——監聽器

ApplicationListener類初始化位置 在類SpringApplication的構造方法&#xff0c;第267行 在META-INFO/spring.factories中配置的實現類 spring-boot # Application Listeners org.springframework.context.ApplicationListener\ org.springframework.boot.ClearCachesApplic…

Top級“水刊”!高達10.1分,發文量大,最快1個月左右錄用,幾乎沾邊可錄!

本周投稿推薦 SCI ? 能源科學類&#xff0c;1.5-2.0&#xff08;來稿即錄25天&#xff09; ? 計算機類&#xff0c;2.0-3.0&#xff08;純正刊29天錄用&#xff09; EI ? 各領域沾邊均可&#xff08;2天錄用&#xff09; 知網 ? 7天錄用-檢索&#xff08;急錄友好&…

【YOLOv5進階】——替換主干網絡(backbone)-MobileNet為例

聲明:筆記是做項目時根據B站博主視頻學習時自己編寫,請勿隨意轉載! 一、說在前面的一些話 1、torchvision 需要用到torchvision里的一些模塊,之前第一期配置環境的時候已經安裝過torchvision! torchvision是PyTorch生態系統中的一個關鍵庫,專門為計算機視覺任務設計和優…

個性化微課教學視頻推薦系統-計算機畢業設計源碼77648

個性化微課教學視頻推薦系統 摘 要 隨著信息技術的迅猛發展&#xff0c;教育領域正經歷著前所未有的變革。微課作為一種新興的教學資源形式&#xff0c;以其短小精悍、針對性強、易于傳播等特點&#xff0c;逐漸受到廣大師生的青睞。然而&#xff0c;在微課資源日益豐富的今天…

Python語法基礎

python語法 TIPS&#xff1a;本文適合有一定編程語言基礎的人快速復習python基本語法 python的IO&#xff1a; 基礎input ainput()&#xff1a;默認輸入 基礎output print():默認輸出 默認換行參數end""控制字母之間的距離,可以理解為默認為換行符&#xff0c;修改…

谷粒商城學習筆記-逆向工程錯誤記錄

文章目錄 1&#xff0c;Since Maven 3.8.1 http repositories are blocked.1.1 在maven的settings.xml文件中&#xff0c;新增如下配置&#xff1a;1.2&#xff0c;執行clean命令刷新maven配置 2&#xff0c;internal java compiler error3&#xff0c;啟動逆向工程報錯&#x…

【Linux】網絡新手村

歡迎來到 破曉的歷程的 博客 ??不負時光&#xff0c;不負己?? 引言 今天&#xff0c;我們就開始學習Linux網絡相關的內容。這篇博客作為Linux網絡板塊的第一篇博客看&#xff0c;我們首先要帶著大家明白Linux網絡的一些名詞的概念&#xff0c;為之后的學習掃清障礙。然后我…

Bootstrap 按鈕下拉菜單

Bootstrap 按鈕下拉菜單 簡介 Bootstrap 是一個流行的前端框架&#xff0c;用于快速開發響應式和移動設備優先的網頁。它提供了一套豐富的組件&#xff0c;包括導航、下拉菜單、按鈕等&#xff0c;使得開發者能夠輕松構建功能豐富且美觀的界面。在本文中&#xff0c;我們將重…

新加坡工作和生活指北:餐飲出行篇

文章首發于公眾號&#xff1a;Keegan小鋼 ?餐飲 前一篇文章 說到&#xff0c;有些房東不允許房客煮飯&#xff0c;那在新加坡都去哪吃飯&#xff1f;有什么吃的呢&#xff1f; 比較便宜的餐飲場所就是小販中心、咖啡店和冷氣食閣&#xff0c;也是大部分人常去的就餐場所。咖…

分布式整合

一、分布式架構介紹 什么是分布式系統 分布式系統指一個硬件或軟件組件分布在不同的網絡計算機上&#xff0c;彼此之間僅僅通過消息傳遞進行通信和協調的系統。 通俗的理解&#xff0c;分布式系統就是一個業務拆分成多個子業務&#xff0c;分布在不同的服務器節點&#xff0…

使用Java實現復雜數據結構算法

使用Java實現復雜數據結構算法 大家好&#xff0c;我是微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 1. 前言 在軟件開發中&#xff0c;復雜數據結構和算法是提升程序效率和性能的重要組成部分。本文將通過Java語言&…

OCR技術主要用于自動化文本數據的錄入

OCR是“Optical Character Recognition”的縮寫&#xff0c;中文意思是光學字符識別。這是一種技術&#xff0c;允許電子設備如掃描儀或數碼相機讀取文檔中的文本&#xff0c;通過檢測和分析文本的暗和亮的模式來識別字符的形狀&#xff0c;然后將這些形狀轉換為可被計算機處理…

ASP.NET Core----基礎學習03----開發者異常頁面 MVC工作原理及實現

文章目錄 1. 開發者異常頁面(1)Startup.cs 頁面的基礎配置(2)自定義顯示報錯代碼的前后XX行 2. MVC 的原理3. MVC 的實現4.默認路由路徑5.返回Json字符串 1. 開發者異常頁面 (1)Startup.cs 頁面的基礎配置 namespace ASP.Net_Blank {public class Startup{private readonly IC…