1. 程式人生 > 其它 >Java中final關鍵字

Java中final關鍵字

技術標籤:Javajava

Java中final關鍵字

final為狀態修飾符,最終的意思,可以修飾類,成員變數,成員方法,不能修飾構造方法

final用於修飾屬性、變數

用final修飾後將變數定義成為了常量,當定義為常量後,無法對其再次進行賦值。

public class Demo1{
	public void toFinal1(){
	final int MAX_LENGTH = 100 ;
	//此處若再次對該常類進行賦值,則會報錯
	}
}

若final修飾區域性變數,則可以在聲明後進行賦值一次。強調:只能賦值一次。

public class Demo2{
	public void
toFinal2(){ final int MAX_LENGTH ; MAX_LENGTH = 100 ; //此處若再次對該常類進行賦值,則會報錯 } }

若final修飾成員屬性,則必須在宣告時進行賦值

public class Demo3{
	final int MAX_LENGTH = 100  ;
	//此處若再次對該常類進行賦值,則會報錯
	//若將其拆分為先聲明後賦值也會報錯
	public void toFinal3(){
	}
}

final用於修飾類

final修飾的類,不可以被繼承

final用於修飾方法

final修飾的方法,不能被子類重寫。

類中所有的private方法都隱式地指定為是final的,由於無法在類外使用private方法,所以也就無法覆蓋它。

此時可以在子類中定義相同的方法名和引數,這種情況不再產生重寫與final的矛盾,而是在子類中重新定義了新的方法。

可以對private方法新增final修飾符,但並沒有新增任何額外意義。

final關鍵字的好處

final關鍵字提高了效能。JVM和Java應用都會快取final變數。

final變數可以安全的在多執行緒環境下進行共享,而不需要額外的同步開銷。

使用final關鍵字,JVM會對方法、變數及類進行優化。

final和abstract這兩個關鍵字是反相關的,final類就不可能是abstract的

在匿名類中所有變數都必須是final變數

final與static區別

final修飾的變數將變為常量,而static是將變數或方法靜態處理。

在使用中final將變數定為某值,無論通過方法或直接使用 物件.屬性 都無法改變其值。

而static修飾的變數在物件中可以改變,不過改變的值是在類中進行改變,在建立下一個物件時,新的物件的static修飾的變數是改變後的值。