三種被final修飾的場景:
Java中final關鍵字的使用很頻繁,它可以修飾變量、方法跟類。“final”的英文意思是最終的、不可更改的意思,因此被final修飾的變量、方法或類是不能被更改的。
final一般會跟static關鍵字結合使用。下面分別解析被final修飾的變量、方法和類:
一、final變量
定義:被final修飾的變量就是final變量,final變量經常和static關鍵字一起使用,作爲常量。
特點:final變量被賦值後不能被更改,否則會出現編譯錯誤。
補充:final變量名一般都大寫,比如final int COUNT。
示例:
public static final int COUNT = 100;
public static final String TEST = "HAYDEN";
非靜態的final變量也可以在類的構造方法中爲其賦值。
public class Test {
public final int COUNT;
public Test(int COUNT){
this.COUNT = COUNT;
}
}
二、final方法
定義:被final修飾的方法就是final方法。
特點:final方法不能被重寫。(一般情況下,當一個方法是很完整的,不需要被重寫或者你不希望被被別人重寫,可以將方法聲明爲final),final方法比非final方法要快,因爲在編譯的時候已經靜態綁定了,不需要在運行時再動態綁定。
示例:
public final String finalTest(){
return "This is a final method!";
}
三、final類
定義:被final修飾的類就是final類。
特點:final類不能被繼承。java自帶很多final類,比如包裝類String、Interger等。一般final類功能都十分完整,不需要子類來進行擴充。
示例:
public final class FinalClassTest {
}
使用final關鍵字修飾的好處:
1.final關鍵字提高了性能。JVM和Java應用都會緩存final變量。
2.final變量可以安全的在多線程環境下進行共享,而不需要額外的同步開銷。
3.使用final關鍵字,JVM會對方法、變量及類進行優化。