日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA中Final的用法

發布時間:2025/1/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA中Final的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JAVA中Final的用法

1.?修飾基礎數據成員的final

這是final的主要用途,其含義相當于C/C++const,即該成員被修飾為常量,意味著不可修改。如java.lang.Math類中的PIEfinal成員,其值為3.1415926535897932.718281828459045

2.?修飾類或對象的引用的final

Java中,我們無法讓對象被修飾為final,而只能修飾對象的引用,這意味著即使你寫public final A a = new A(); 事實上a指向的對象的數據依然可以被修改,不能修改的是a本身的引用值,即你不能再對a進行重賦值。同樣的情況出現在數組中,比如public final int[] a = {1, 2, 3, 4, 5},事實上a中的數值是可修改的,即可以寫a[0] = 3。據目前了解,java中數組內的數據是無法修飾為不可修改的,而C/C++可以。

3.修飾方法的final

修飾方法的finalC/C++中修飾成員對象的const大不相同。首先,修飾方法的final含義不是不可修改,而是指該方法不可被繼承成員重新定義。(注意,這里所說的不能被重新定義,并不是指子類一定不能定義同名方法,如果父類的方法是私有類型,子類是允許定義該方法的,這里指的不能重新定義是指不能通過改寫方法來使得方法重寫的多態性得以實現,如不希望A a = new B(); a.f();這樣的重寫方法情況出現)

示例:

public class A {

???// final方法f

???public final void f() {

??????System.out.println("A中的final方法f被調用了");

???}

}

public class Bextends A {

???// 編譯錯誤!父類的f方法是final類型,不可重寫!

???//! public void f() {

???//!???? System.out.println("B中的方法f被調用了");

???//! }

}

此外,當一個方法被修飾為final方法時,意味著編譯器可能將該方法用內聯(inline)方式載入,所謂內聯方式,是指編譯器不用像平常調用函數那樣的方式來調用方法,而是直接將方法內的代碼通過一定的修改后copy到原代碼中(將方法主體直接插入到調用處,而不是進行方法調用)。這樣可以讓代碼執行的更快(因為省略了調用函數的開銷),比如在int[] arr = new int[3]調用arr.length()等。

另一方面,私有方法也被編譯器隱式修飾為final,這意味著private final void f()private void f()并無區別。

4. 修飾類的final

當一個類被修飾為final時,它的含義很明確,就是不允許該類被繼承,也就是說,該類絕后了,任何繼承它的操作都會以編譯錯誤告終。這也凸顯出Javafinal而不用const作為標識符的理由。(成員變量可以不是final,成員方法直接是final)

??????示例:

??????public final class A {

}

// 編譯錯誤!Afinal類型,不可被繼承!

//!public classB extends A{

//!}

5.?參數final

?對對象參數做final修飾。以為對象變量傳遞的是其引用,為防止調用過程中無意的更改而修飾。

?

總結

以上是生活随笔為你收集整理的JAVA中Final的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。