0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Java中對 final 關鍵詞的介紹

科技綠洲 ? 來源:Java技術指北 ? 作者:Java技術指北 ? 2023-10-10 17:07 ? 次閱讀

1、修飾變量

稍微有點Java基礎的都知道用final關鍵字修飾的變量稱為常量,常量的意思是不可更改。變量為基本數(shù)據(jù)類型,不可更改很容易理解,那么對于引用類型呢?不可能改的是其引用地址,還是對象的內容?

我們首先構造一個實體類:Person

package com.ys.bean;

/**
 * Create by YSOcean
 */
public class Person {
    private  String name;

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

接著根據(jù)創(chuàng)建一個 Person 對象:

圖片
可以看到,首先通過 final 關鍵字修飾一個對象 p,然后接著將 p 對象指向另一個新的對象,發(fā)現(xiàn)報錯,也就是說final修飾的引用類型是不能改變其引用地址的。

接著我們改動 p 對象的 name 屬性:

圖片
發(fā)現(xiàn)程序沒有報錯。

結論:被 final 修飾的變量不可更改其引用地址,但是可以更改其內部屬性。

2、修飾方法

final 關鍵字修飾的方法不可被覆蓋。

在《Java編程思想》第 4 版 7.8.2 章節(jié) final 方法p176 頁這樣描述:使用 final 方法原因有兩個:

①、第一個原因是把方法鎖定,以防止任何繼承類修改它的含義,這是出于設計的考慮:想要確保在繼承中使方法的行為保持不變,并且不會被覆蓋。

②、第二個原因是效率,在 Java 的早期實現(xiàn)中,如果將一個方法聲明為 final,就是同意編譯器將針對該方法的所有調用都轉為內嵌調用,內嵌調用能夠提高方法調用效率,但是如果方法很大,內嵌調用不會提高性能。而在目前的Java版本中(JDK1.5以后),虛擬機可以自動進行優(yōu)化了,而不需要使用 final 方法。

所以final 關鍵字只有明確禁止覆蓋方法時,才使用其修飾方法。

PS:《Java編程思想》中指出類中所有的 private 方法都隱式指定為 final 的,所以對于 private 方法,我們顯式的聲明 final 并沒有什么效果。但是我們創(chuàng)建一個父類,并在父類中聲明一個 private 方法,其子類中是能夠重寫其父類的private 方法的,這是為什么呢?

父類:Parent.class

package com.ys.bean;
/**
 * Create by YSOcean
 */
public class Parent {
    private void say(){
        System.out.println("parent");
    }
}

子類:Son.class

package com.ys.bean;
/**
 * Create by YSOcean
 */
public class Son extends Parent {

    private void say(){
        System.out.println("son");
    }

}

其實仔細看看,這種寫法是方法的覆蓋嗎?我們通過多態(tài)的形式并不能調用到父類的 say() 方法:

圖片
并且,如果我們在子類的 say() 方法中,添加 @Override 注解也是會報錯的。

圖片
所以這種形式并不算方法的覆蓋。

3、修飾類

final 修飾類表示該類不可被繼承。

也就是說不希望某個類有子類的時候,用final 關鍵字來修飾。并且由于是用 final 修飾的類,其類中所有的方法也被隱式的指為 final 方法。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2969

    瀏覽量

    104791
  • 編譯器
    +關注

    關注

    1

    文章

    1634

    瀏覽量

    49144
  • 數(shù)據(jù)類型

    關注

    0

    文章

    236

    瀏覽量

    13624
  • final
    +關注

    關注

    0

    文章

    5

    瀏覽量

    2613
收藏 人收藏

    評論

    相關推薦

    [討論]提高網站關鍵詞排名的28個SEO小技巧

    ) 內容自然出現(xiàn)關鍵詞 內容第一段和最后一段出現(xiàn)關鍵詞 H1,H2標簽中出現(xiàn)關鍵詞 導出鏈接錨文本包含
    發(fā)表于 12-01 17:08

    TF-IDF測量文章的關鍵詞相關性研究

    停用詞的移除、大小寫字母轉化和詞干提取。4)獲取查詢。獲取單詞權重,對于可疑文檔利用TF-IDF獲得關鍵詞,并排序得到相應的關鍵詞列表。排在前n個的關鍵詞組成一個查詢,以此類推,本試驗
    發(fā)表于 01-26 10:38

    亞馬遜代運營 amazon Search term 關鍵詞填寫的“神技”

    關鍵詞稍作調整,以及篩選出的關鍵詞在搜索結果的排名做出決定,是否應該放在 search term ;3.放一些與自己產品相關的長尾
    發(fā)表于 06-05 15:41

    HanLP關鍵詞提取算法分析詳解

    l 參考論文:《TextRank: Bringing Order into Texts》l TextRank算法提取關鍵詞Java實現(xiàn)l TextRank算法自動摘要的Java實現(xiàn)這篇文章
    發(fā)表于 11-05 10:41

    關鍵詞優(yōu)化有哪些實用的方法

    的排名。還有一些實用的方法就是網站的一個關鍵詞布局,這里應該設計seo算法的頁面相關匹配程度,這樣來提升網站頁面的整體相關性,其次是重要的位置部署好我們要做的關鍵詞,比如重要的一些標簽來添加我們做
    發(fā)表于 08-11 01:19

    百度關鍵詞排名掉完了怎么辦

    一夜之間關鍵詞排名掉完了,沒有被K,也沒有出現(xiàn)違規(guī)操作,這是怎么回事呢?
    發(fā)表于 01-27 11:01

    #2023,你的 FPGA 年度關鍵詞是什么? #

    FPGA 年度關鍵詞,我的想法是“標準化”;今年的工作遇到了不少同事的issues,本身都是小問題或者很細節(jié)的東西但是卻反復出現(xiàn)問題,目前想到的最好的辦法是做好設計規(guī)則的標準化才能避免,不知道大家有沒有更好的建議?
    發(fā)表于 12-06 20:31

    2009年國照明行業(yè)十大關鍵詞

    2009年國照明行業(yè)十大關鍵詞   一、節(jié)能推廣   關鍵詞:節(jié)能推廣   事
    發(fā)表于 12-15 10:24 ?637次閱讀

    基于強度熵解決中文關鍵詞識別

    文本的關鍵詞識別是文本挖掘的基本問題之一。在研究現(xiàn)有基于復雜網絡的關鍵詞識別方法的基礎上,從整個復雜網絡拓撲結構特征的信息缺失角度來考察各節(jié)點的重要程度。提出強度熵測度來量化評估各節(jié)點重要程度,用于解決中文
    發(fā)表于 11-24 09:54 ?7次下載
    基于強度熵解決中文<b class='flag-5'>關鍵詞</b>識別

    java final關鍵字用法技巧匯總解析

    談到final關鍵字,想必很多人都不陌生,在使用匿名內部類的時候可能會經常用到final關鍵字。另外,Java
    發(fā)表于 12-01 11:02 ?1123次閱讀
    <b class='flag-5'>java</b> <b class='flag-5'>final</b><b class='flag-5'>關鍵</b>字用法技巧匯總解析

    基于關鍵詞的最優(yōu)路徑查詢算法

    為改進基于關鍵詞的最優(yōu)路徑查詢算法,在大規(guī)模圖以及多查詢關鍵詞下復雜度過高與可擴展性不足的缺陷,依據(jù)查詢關鍵詞序列構建候選路徑的策略提出一種高效查詢算法。該算法在路徑構建過程優(yōu)先滿足
    發(fā)表于 12-06 11:28 ?0次下載

    基于詞頻統(tǒng)計的關鍵詞提取方法

    ,通過詞語逆頻率TF-IWF算法,按權值排序得到關鍵詞。這種改進算法解決了傳統(tǒng)中文關鍵詞提取方法對相似度高的的不重視而導致關鍵詞提取精度
    發(fā)表于 12-15 15:29 ?13次下載
    基于詞頻統(tǒng)計的<b class='flag-5'>關鍵詞</b>提取方法

    基于自動關鍵詞抽取方法

    自動關鍵詞抽取是從文本或文本集合自動抽取主題性或重要性的或短語,是文本檢索、文本摘要等許多文本挖掘任務的基礎性和必要性的工作.探討了關鍵詞和自動
    發(fā)表于 12-26 16:47 ?2次下載
    基于自動<b class='flag-5'>關鍵詞</b>抽取方法

    融合BERT向量與TextRank的關鍵詞抽取方法

    Textrank轉移概率矩陣計算過程,同時通過迭代運算對文檔的詞語進行綜合影響力得分排序,最終提取得分最高的TopN個詞語作為關鍵詞。實驗結果表明,當選取Top3、Top5、Top7和Topl0個關鍵詞時,與基于
    發(fā)表于 03-21 09:55 ?18次下載
    融合BERT<b class='flag-5'>詞</b>向量與TextRank的<b class='flag-5'>關鍵詞</b>抽取方法

    Java對static關鍵詞介紹

    static 是Java的一個關鍵字,可以用來修飾成員變量、修飾成員方法、構造靜態(tài)代碼塊、實現(xiàn)靜態(tài)導包以及實現(xiàn)靜態(tài)內部類,下面我們來分別介紹。 1、修飾成員變量 用 static 修飾成員變量
    的頭像 發(fā)表于 10-11 15:26 ?489次閱讀
    <b class='flag-5'>Java</b><b class='flag-5'>中</b>對static<b class='flag-5'>關鍵詞</b>的<b class='flag-5'>介紹</b>