java final 關(guān)鍵字

[toc]

final關(guān)鍵字 - think in java 筆記

之前對于final關(guān)鍵字只是大概了解,平時編碼幾乎用不到.最近,因為經(jīng)常要寫控件監(jiān)聽事件,在方法中局部匿名內(nèi)部類使用局部變量時,經(jīng)常遇到到底是添加final關(guān)鍵字還是將局部變量提升為全局變量的選擇迷茫.特此整理備忘.

問題原因

內(nèi)部類對象不能使用該內(nèi)部類所在方法的"非局部常量"局部變量存在"棧"中,方法結(jié)束后,棧結(jié)構(gòu)中的引用被刪除,但堆中內(nèi)部類的對象仍然存在,其引用有可能在其他代碼中使用,不能保證局部變量的存活期和方法內(nèi)部類對象一樣長,所以內(nèi)部類只能使用方法中的常量.

最常見的情況就是在Activity的生命周期方法中添加監(jiān)聽事件.

final 屬性

對于屬性,重要的是要保證其初始化.而對于初始化的不同途徑,final關(guān)鍵字的使用情況不同.
確保初始化
屬性必須賦予初始值.賦予初始值之后,基本數(shù)據(jù)類型的值不能被改變,而引用數(shù)據(jù)類型只是引用于堆內(nèi)存中對象的聯(lián)系不能改變,但堆內(nèi)存中的對象仍可改變.
編譯時常量
例如 : final int i = 3;
在運行時初始化
例如 : final int i = random.nextInt(20);
空白final
只有當確定通過構(gòu)造器一定能夠初始化該屬性時,final修飾的屬性才不必初始化.此時的屬性在保持final特性的同時,又能在實例化不同的對象時保持一定的靈活性.
static final
與只使用final修飾的屬性不同,static不會因不同的對象而不同.

final 參數(shù)

對于final 引用類型參數(shù),在方法中無法更改引用所指向的對象.對于final 基本類型參數(shù),在方法中參數(shù)為只讀模式,不能操作.
例如 : i + 1i++ 的區(qū)別,
在局部匿名內(nèi)部類中常見,與局部內(nèi)部類使用局部變量類似,常要求添加final修飾符.
例如 : ListView 適配 getView方法中,對控件添加監(jiān)聽事件并使用getView方法的參數(shù) int position

final 方法

主要目的是防止繼承類修改方法定義.
private 與 final
private 修飾的方法被隱式的指定為final,對private修飾過的方法添加final修飾符沒有意義.
對于父類中的private方法,無法重寫,即使你嘗試這么做了,也只是生成了一個新的方法而已.

final 類

防止有子類繼承該類;因此,該類中的所有方法同時被隱式的指定為final.但屬性可根據(jù)需要選擇修飾符.

final類與java類庫

對方法使用final修飾符的必要性?而對于類的復(fù)用方式很難預(yù)測,final方法很多時候顯得過于嚴苛.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唤反,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌肠缨,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件晒奕,死亡現(xiàn)場離奇詭異,居然都是意外死亡魄眉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門坑律,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霜运,“玉大人,你說我怎么就攤上這事淘捡。” “怎么了激况?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵膘魄,是天一觀的道長。 經(jīng)常有香客問我创葡,道長,這世上最難降的妖魔是什么洛波? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任骚露,我火速辦了婚禮,結(jié)果婚禮上棘幸,老公的妹妹穿的比我還像新娘。我一直安慰自己误续,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布育瓜。 她就那樣靜靜地躺著欣尼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愕鼓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天册倒,我揣著相機與錄音,去河邊找鬼驻子。 笑死估灿,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的馅袁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼犹褒,長吁一口氣:“原來是場噩夢啊……” “哼弛针!你這毒婦竟也來了叠骑?” 一聲冷哼從身側(cè)響起削茁,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朦拖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體璧帝,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡富寿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了苏潜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片变勇。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡贴唇,死狀恐怖飞袋,靈堂內(nèi)的尸體忽然破棺而出戳气,到底是詐尸還是另有隱情巧鸭,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布呀袱,位于F島的核電站郑叠,受9級特大地震影響夜赵,放射性物質(zhì)發(fā)生泄漏锻拘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一婉宰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧心包,春花似錦馒铃、人聲如沸蟹腾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽炉爆。三九已至,卻和暖如春芬首,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背郁稍。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工胜宇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留恢着,地道東北人财破。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像狈究,于是被迫代替她去往敵國和親盏求。 傳聞我的和親對象是個殘疾皇子抖锥,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 在Java 中磅废,final關(guān)鍵字可以修飾 類荆烈,方法拯勉,和變量(包含成員變量和局部變量)憔购。 final 類 當用fin...
    伊凡的一天閱讀 244評論 0 2
  • Java final關(guān)鍵字修飾變量、類导绷、方法時,表示該變量/類/方法是無法被修改的妥曲,通常使用final關(guān)鍵字主要出...
    LilacZiyun閱讀 715評論 0 2
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法钦购,類相關(guān)的語法,內(nèi)部類的語法押桃,繼承相關(guān)的語法,異常的語法怨规,線程的語...
    子非魚_t_閱讀 31,624評論 18 399
  • 樹莓派 kali linux MT7601U安裝 由于筆者是新手,手里有個360隨身wifi2代波丰,是基于MT760...
    Davidham3閱讀 10,421評論 2 5
  • R1請求與命令一旦人們認為不答應(yīng)我們就會受到懲罰掰烟,他們就會把我們的請求看做是命令爽蝴。聽到命令時,一個人有2種選擇:服...
    Fly_Catkin閱讀 207評論 0 0