大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java編程中的final使用方法

Java編程中的final使用方法

更新時間:2020-07-17 16:36:09 來源:動力節點 瀏覽2399次

final關鍵字

在java中,final的含義在不同的場景下有細微的差別,但總體來說,它指的是"這是不可變的".下面,我們來講final的四種主要用法.

1.修飾數據

在編寫程序時,我們經常需要說明一個數據是不可變得,我們稱之為常量,在java中,用final關鍵字修飾的變量,只能進行一次賦值操作,并且在生命周期內不可以改變它的值.更重要的是,final會告訴編輯器,這個數據是不會修改的,那么編譯器就可能會在編譯時期就對該數據進行替換甚至執行計算,這樣可以對我們的程序起到一點優化.不過在針對基本類型和引用類型時,final關鍵字的效果存在細微差別.

我們來看下面的例子:

class?Value?{
????int?v;
????public?Value(int?v)?{
????????this.v?=?v;
????}
}
public?class?FinalTest?{
????
????final?int?f1?=?1;
????final?int?f2;
????public?FinalTest()?{
????????f2?=?2;
????}
????public?static?void?main(String[]?args)?{
????????final?int?value1?=?1;
????????//?value1?=?4;
????????final?double?value2;
????????value2?=?2.0;
????????final?Value?value3?=?new?Value(1);
????????value3.v?=?4;
????}
}

在上面的例子中,我們先看一下main方法中的幾個final修飾的數據,在給value1賦初始值之后,我們無法對value1進行修改,final關鍵字起到了常量的作用.從value2我們可以看到,final修飾的變量可以不再聲明時賦值,即可以先聲明,后賦值.value3是一個引用變量,這里我們可以看到final修飾引用變量時,只是限定了引用變量的引用不可以改變,既不是將value3再次引用另一個value對象,但是引用的對象的值是可以改變的,從內存模型中我們看的更加清晰:

從上面,final修飾的值是用粗線條的邊框表示它的值是不可改變的,我們知道引用變量的值實際是它的引用的地址,也就是說該地址的值是不可改變的,從而說明了為什么不可以改變引用變量.而實際引用的對象實際上是不受final關鍵字的影響的,所以他的值是可以改變的.

另一方面,我們看到了用final修飾成員變量時的細微差別,因為final修飾的數據的值是不可改變的,所以我們必須確保在使用前就已經對成員變量賦值了.因此對于final修飾的成員變量,餓哦們有且只要兩個地方可以給它賦值,一個聲明該成員變量時賦值,另一個是在構造方法中賦值,在這兩個地方必須給它們賦初始值.

最后我們需要注意的一點是,同時使用static和final修飾的成員在內存中只占據一段不能改變的存儲空間.

2.修飾方法參數

前面我們可以看到,如果變量是我們自己創建的,那么使用final修飾表示我們只會給它賦值一個且不會改變變量的值.那么如果變量是做參數傳入的,我們怎么保證他的值不會改變呢?這就用到了final的第二種用法,即在我們編寫方法時,可以在參數前面添加fianl關鍵字,它表示在整個方法中,餓哦們不會(實際上是不能)改變參數的值:

public?class?FinalTest?{
????/*?...?*/

????public?void?finalFunc(final?int?i,?final?Value?value)?{
????????//?i?=?5;?不能改變i的值
????????//?v?=?new?Value();?不能改變v的值
????????value.v?=?5;?//?可以改變引用對象的值
????}
}

3.修飾方法

第三種方式,即使用final關鍵字修飾方法,它表示該方法不能被覆蓋,這種使用方法主要從設計的角度考慮,即明確告訴其他繼承該類的程序員,不希望它們去覆蓋這個方法.這種方式我們很容易理解,然而,關于private和final關鍵字還有一些聯系,這就是類中所有的private方法都隱示地指定為final的,由于無法在類外使用private方法,所以也就無法覆蓋它

4.修飾類

了解了final關鍵字的其他用法,我們很容易可以想到使用final關鍵字修飾類的作用,那就是用final修飾的類是無法被繼承的。

上面我們講解了final的四種用法,然而,對于第三種和第四種用法,我們卻甚少使用。這不是沒有道理的,從final的設計來講,這兩種用法甚至可以說是雞肋,因為對于開發人員來講,如果我們寫的類被繼承的越多,就說明我們寫的類越有價值,越成功。即使是從設計的角度來講,也沒有必要將一個類設計為不可繼承的。Java標準庫就是一個很好的反例,特別是Java 1.0/1.1中Vector類被如此廣泛的運用,如果所有的方法均未被指定為final的話,它可能會更加有用。如此有用的類,我們很容易想到去繼承和重寫他們,然而,由于final的作用,導致我們對Vector類的擴展受到了一些阻礙,導致了Vector并沒有完全發揮它應有的全部價值。

Java編程中的final使用方法

Java技術內容

Java中final關鍵字的作用:http://m.dabaquan.cn/tutorial_java_advance/607.html

以上就是動力節點java培訓機構的小編針對“Java編程中的final使用方法”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产成人久久精品一区二区三区 | 91国内在线国内在线播放 | 老头老太做爰xxx视频 | 在线手机福利免费福利院 | 久久精品视频亚洲 | 久久草视频在线 | 99福利网| 欧美成人欧美激情欧美风情 | 色爱区综合激情五月综合色 | 热er99久久6国产精品免费 | 欧美色欧美亚洲高清在线观看 | 最新亚洲精品国自产在线 | 东京干手机福利视频 | 伊人久久在线视频 | 91免费国产在线观看尤物 | 一区二区三区四区免费视频 | 在线看h| 免费看欧美毛片大片免费看 | 99热久久这里就有精品 | 亚洲一区在线视频观看 | a免费毛片在线播放 | 九九久久99综合一区二区 | 国产精品一区二区三区四区 | 四虎永久免费地址在线网站 | 天天爽夜夜爽免费看 | 成人欧美精品大91在线 | 午夜视频免费国产在线 | 奇米第八色 | 亚洲一级生活片 | 国产理论最新国产精品视频 | 成人区精品一区二区毛片不卡 | 69一级毛片 | 国产香蕉一区二区在线网站 | 中文字幕一二三区乱码老 | 99久久精品费精品国产 | 久草精品免费 | 毛片黄片视频 | 国产精品亚洲二区在线 | 欧美在线一区视频 | 97精品福利视频在线 | 国产女主播喷出白浆视频 |