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

簡單談談java中final,finally,finalize的區(qū)別

 更新時間:2016年05月11日 08:58:18   投稿:hebedich  
Java中final、finally、finalize的區(qū)別與用法,困擾了不少學習者,下面我們就這個問題進行一些探討,希望對大家的學習有所幫助。

(1) final:修飾符(關鍵字),如果一個類被聲明為final,意味著它不能再派生出新的子類,不能作為父類被繼承。因此一個類不能既被聲明為 abstract的,又被聲明為final的。將變量或方法聲明為final,可以保證它們在使用中不被改變。被聲明為final的變量必須在聲明時給定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,不能重載

(2) finally:在異常處理時提供 finally 塊來執(zhí)行任何清除操作。如果拋出一個異常,那么相匹配的 catch 子句就會執(zhí)行,然后控制就會進入 finally塊(如果有的話)。

(3) finalize:方法名。Java 技術允許使用 finalize() 方法在垃圾收集器將對象從內存中清除出去之前做必要的清理工作。這個方法是由垃圾收集器在確定這個對象沒有被引用時對這個對象調用的。它是在 Object 類中定義的,因此所有的類都繼承了它。子類覆蓋 finalize() 方法以整理系統(tǒng)資源或者執(zhí)行其他清理工作。finalize() 方法是在垃圾收集器刪除對象之前對這個對象調用的。

上面也許有點含糊不清,我們更加深入的來探討下

一、性質不同

(1)final為關鍵字;

(2)finalize()為方法;

(3)finally為為區(qū)塊標志,用于try語句中;

二、作用

(1)final為用于標識常量的關鍵字,final標識的關鍵字存儲在常量池中(在這里final常量的具體用法將在下面進行介紹);

(2)finalize()方法在Object中進行了定義,用于在對象“消失”時,由JVM進行調用用于對對象進行垃圾回收,類似于C++中的析構函數;用戶自定義時,用于釋放對象占用的資源(比如進行I/0操作);

(3)finally{}用于標識代碼塊,與try{}進行配合,不論try中的代碼執(zhí)行完或沒有執(zhí)行完(這里指有異常),該代碼塊之中的程序必定會進行;

三、final詳解

1定義變量

1.1  final定義基本類型變量時,要求變量初始化必須在聲明時或者構造函數中,不能用于其它地方。該關鍵字定義的常量,除了初始化階段,不能更改常量的值。

1.2  final定義對象的引用,該引用的初始化與定義常量時的要求一致;該關鍵字定義的對象內容可以改變,但是引用指向的地址不能改變;

2定義參數

如果傳入該參數定義的變量時,方法不能對該參數內容進行修改(錯誤),與定義變量的修改規(guī)則相同;java方法中傳遞基本類型時是傳值的,java方法對于對象的傳遞是傳參的;<歸根結底,java中方法的傳遞是依靠傳遞“副本”:對于基本類型,首先建立一個Copy,并將傳入的值賦值給Copy,然后對Copy進行操作;對于對象類型,首先建立一個引用Copy,并將傳入的對象引用賦值給Copy>

比如:method(final int test);

有些書上說,這里final定義參數,尤其是對象的參數很有作用,不能在方法內對于對象的內容進行改變,這樣的說法是錯誤的!原來我也認為這樣有些函數式編程的特點,不能對于對象的內容進行修改該,這里依舊可以對對象的內容進行修改。

??定義該參數有什么用??

String天生就是final類型的!

3定義方法

(1)使用final關鍵字定義的方法,不能被子類繼承;

(2)允許編譯器將所有對此方法的調用轉化為inline(行內)行為,即可以將此方法直接復制在調用處,而不是進行例行的方法調用(保存斷點、壓棧),這樣會使程序的效率升高。但是---------如果過多的話,這樣會造成代碼膨脹,反而會影響效率,所以該方法要慎用。。

4定義類

一個任何final類無法被任何人繼承,這也就意味著此類在一個繼承樹中是一個葉子類,并且此類被認為是很完美的,不需要進行任何修改(總之是不推薦使用)

相關文章

  • Java中forEach使用lambda表達式,數組和集合的區(qū)別說明

    Java中forEach使用lambda表達式,數組和集合的區(qū)別說明

    這篇文章主要介紹了Java中forEach使用lambda表達式,數組和集合的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • java發(fā)送http get請求的兩種方法(總結)

    java發(fā)送http get請求的兩種方法(總結)

    下面小編就為大家?guī)硪黄猨ava發(fā)送http get請求的兩種方法(總結)。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Spring Boot 配置隨機數的技巧代碼詳解

    Spring Boot 配置隨機數的技巧代碼詳解

    這篇文章主要介紹了Spring Boot 配置隨機數技巧,spring boot 支持在系統(tǒng)加載的時候配置隨機數,具體實例代碼大家參考下本文
    2018-05-05
  • 6個必備的Java并發(fā)面試種子題目合集

    6個必備的Java并發(fā)面試種子題目合集

    并發(fā)是Java面試的經常會考到的知識點,這篇文章主要為大家整理了6個必備的Java并發(fā)面試種子題目,文中的示例代碼簡潔易懂,需要的可以學習一下
    2023-07-07
  • Java接口默認方法帶來的問題分析【二義性問題】

    Java接口默認方法帶來的問題分析【二義性問題】

    這篇文章主要介紹了Java接口默認方法帶來的問題,結合實例形式分析了java接口帶來的二義性問題,需要的朋友可以參考下
    2019-08-08
  • GraalVM系列Native?Image?Basics靜態(tài)分析

    GraalVM系列Native?Image?Basics靜態(tài)分析

    這篇文章主要為大家介紹了GraalVM系列Native?Image?Basics靜態(tài)分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Java利用EasyExcel實現合并單元格

    Java利用EasyExcel實現合并單元格

    在某些業(yè)務場景中可能會有合并單元格的需求,本文將詳細為大家講解Java如何利用EasyExcel實現合并單元格,感興趣的小伙伴可以了解一下
    2022-06-06
  • Kotlin中常見的List使用示例教程

    Kotlin中常見的List使用示例教程

    filter 就像其本意一樣,可以通過 filter 對 Kotlin list 進行過濾,本文重點給大家介紹Kotlin中常見的List使用,感興趣的朋友一起看看吧
    2023-11-11
  • java實現門禁系統(tǒng)

    java實現門禁系統(tǒng)

    這篇文章主要為大家詳細介紹了java實現門禁系統(tǒng)的實現方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 簡單談談SpringMVC轉發(fā)和重定向的區(qū)別

    簡單談談SpringMVC轉發(fā)和重定向的區(qū)別

    下面小編就為大家?guī)硪黄唵握務凷pringMVC轉發(fā)和重定向的區(qū)別。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06

最新評論

拉孜县| 晋江市| 威信县| 陈巴尔虎旗| 昌邑市| 广州市| 昔阳县| 吴忠市| 黄梅县| 鄂托克前旗| 陆丰市| 观塘区| 益阳市| 武功县| 射洪县| 静宁县| 金华市| 太湖县| 汶上县| 海原县| 且末县| 肇州县| 依兰县| 澄城县| 平遥县| 江安县| 揭阳市| 抚宁县| 应城市| 娄烦县| 禹州市| 新野县| 兴山县| 扶沟县| 剑河县| 阳西县| 鱼台县| 大英县| 新平| 修水县| 兴文县|