final關鍵字的含義? final在Java中是一個保留的關鍵字,可以聲明成員變數、方法、類以及本地變數。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變數再次初始化的話,編譯器會報編譯錯誤。 什麼是final變數? 凡是對成員變數或者本地變數(在方法中的或者 ...
final關鍵字的含義?
final在Java中是一個保留的關鍵字,可以聲明成員變數、方法、類以及本地變數。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變數再次初始化的話,編譯器會報編譯錯誤。
什麼是final變數?
凡是對成員變數或者本地變數(在方法中的或者代碼塊中的變數稱為本地變數)聲明為final的都叫作final變數。final變數經常和static關鍵字一起使用,作為常量。
什麼是final方法?
final也可以聲明方法。方法前面加上final關鍵字,代表這個方法不可以被子類的方法重寫。如果你認為一個方法的功能已經足夠完整了,子類中不需要改變的話,你可以聲明此方法為final。final方法比非final方法要快,因為在編譯的時候已經靜態綁定了,不需要在運行時再動態綁定。
什麼是final類?
使用final來修飾的類叫作final類。final類通常功能是完整的,它們不能被繼承。Java中有許多類是final的,譬如String, Interger以及其他包裝類。
final關鍵字的好處
下麵總結了一些使用final關鍵字的好處
- final關鍵字提高了性能。JVM和Java應用都會緩存final變數。
- final變數可以安全的在多線程環境下進行共用,而不需要額外的同步開銷。
- 使用final關鍵字,JVM會對方法、變數及類進行優化。
String的final
將方法或類聲明為final主要目的是:確保它們不會再子類中改變語義。String類是final類,這意味著不允許任何人定義String的子類。換言之,如果有一個String的引用,它引用的一定是一個String對象,而不可能是其他類的對象。
final的理解:
final關鍵字可以用於成員變數、本地變數、方法以及類。
你不能夠對final變數再次賦值。
本地變數必須在聲明時賦值。
在匿名類中所有變數都必須是final變數。
final方法不能被重寫。
final類不能被繼承。
final關鍵字不同於finally關鍵字,後者用於異常處理。
final關鍵字容易與finalize()方法搞混,後者是在Object類中定義的方法,是在垃圾回收之前被JVM調用的方法。
介面中聲明的所有變數本身是final的。
final和abstract這兩個關鍵字是反相關的,final類就不可能是abstract的。
final方法在編譯階段綁定,稱為靜態綁定(static binding)。