2020-09-11 Java Final關(guān)鍵字(為下一篇內(nèi)部類做準(zhǔn)備)

四種用法:
1.可以用來修飾一個(gè)類

public final class 類名稱{
  //方法體...
}

含義:這個(gè)類不能有任何子類
注意:一個(gè)final類,其中所有成員方法都不能進(jìn)行覆蓋重寫(沒兒子)
2.可以用來修飾一個(gè)方法

修飾符 final 返回值類型 方法名稱(參數(shù)列表){
  //方法體...
}

注意:當(dāng)final修飾一個(gè)方法,此方法不能進(jìn)行覆蓋重寫;所以對于類和方法來說,abstract和final不能同時(shí)使用,因?yàn)槊堋?br> 3.可以用來修飾一個(gè)局部變量
注意:當(dāng)final修飾一個(gè)局部變量(只保證唯一一次賦值),那么這個(gè)局部變量就不能進(jìn)行更改。
對于基本類型來說,不可變說的是變量中的數(shù)據(jù)不可改變
對于引用類型來說,不可變說的是變量中的地址值不可改變,但里面的內(nèi)容可以改變。

final1.png

4.可以用來修飾一個(gè)成員變量
注意:當(dāng)final修飾一個(gè)成員變量,那么這個(gè)成員變量也不能進(jìn)行更改。
與局部變量區(qū)別:
1、由于成員變量有默認(rèn)值,所以用了final后必須手動賦值(報(bào)提示),不給默認(rèn)值了;
2、當(dāng)final修飾一個(gè)成員變量,要么直接賦值,要么通過構(gòu)造方法賦值(二者選其一)。必須保證所有重載的構(gòu)造方法對其都有賦值。

成員變量和局部變量的區(qū)別

1.從語法形式上,看成員變量是屬于類的,而局部變量是在方法中定義的變量或是方法的參數(shù);成員變量可以被public,private,static等修飾符所修飾,而局部變量不能被訪問控制修飾符及static所修飾;但是,成員變量和局部變量都能被final所修飾;
2.從變量在內(nèi)存中的存儲方式來看,成員變量是對象的一部分,而對象存在于堆內(nèi)存,局部變量存在于棧內(nèi)存
3.從變量在內(nèi)存中的生存時(shí)間上看,成員變量是對象的一部分,它隨著對象的創(chuàng)建而存在,而局部變量隨著方法的調(diào)用而自動消失。
4.成員變量如果沒有被賦初值,則會自動以類型的默認(rèn)值而賦值(一種情況例外被final修飾但沒有被static修飾的成員變量必須顯示地賦值);而局部變量則不會自動賦值。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容