《Java架構築基》從Java基礎講起——深刻理解Finial

一.final關鍵字概述

1. 爲何會有finaljava

因爲繼承中有一個方法重寫的現象,而有時候咱們不想讓子類去重寫父類的方法.這對這種狀況java就給咱們提供了一個關鍵字: final編程

2. final概述安全

final關鍵字是最終的意思,能夠修飾類,變量,成員方法。併發

3. final修飾特色ide

  • 修飾類: 被修飾類不能被繼承
  • 修飾方法: 被修飾的方法不能被重寫
  • 修飾變量: 被修飾的變量不能被從新賦值,由於這個量實際上是一個常量

4. final關鍵字修飾局部變量 線程

  • 基本類型,是值不能被改變
  • 引用類型,是地址值不能被改變

二. final,finally,finalize有什麼不一樣?

1. final能夠修飾類,方法,變量設計

  • final修飾類表明類不能夠繼承拓展
  • final修飾變量表示變量不能夠修改
  • final修飾方法表示方法不能夠被重寫

2. finally則是Java保證重點代碼必定要被執行的一種機制對象

可使用 try-finally 或者 try-catch-finally 來進行相似關閉 JDBC鏈接、保證 unlock 鎖等動做。繼承

3. finalize 是基礎類 java.lang.Object的一個方法資源

它的設計目的是保證對象在被垃圾收集前完成特定資源的回收。finalize 機制如今已經不推薦使用,而且在 JDK 9開始被標記爲 deprecated。

4. final 關鍵字深刻理解

  • 能夠將方法或者類聲明爲 final,這樣就能夠明確告知別人,這些行爲是不準修改的。
  • 若是你關注過 Java 核心類庫的定義或源碼, 有沒有發現java.lang 包下面的不少類,至關一部分都被聲明成爲final class?在第三方類庫的一些基礎類中一樣如此,這能夠有效避免 API 使用者更改基礎功能,某種程度上,這是保證平臺安全的必要手段。
  • 使用 final 修飾參數或者變量,也能夠清楚地避免意外賦值致使的編程錯誤,甚至,有人明確推薦將全部方法參數、本地變量、成員變量聲明成 final。
  • final 變量產生了某種程度的不可變(immutable)的效果,因此,能夠用於保護只讀數據,尤爲是在併發編程中,由於明確地不能再賦值 final 變量,有利於減小額外的同步開銷,也能夠省去一些防護性拷貝的必要。

5. 在如下4種特殊狀況下,finally塊不會被執行:

  • 在finally語句塊中發生了異常。
  • 在前面的代碼中用了System.exit()退出程序。
  • 程序所在的線程死亡。
  • 關閉CPU。
相關文章
相關標籤/搜索