天天看點

Java 中的 final 關鍵字定義作用用法

最近在重溫之前看的 JavaSE 教程, 在 final 關鍵字這裡有點小疑惑, 查了些資料, 做個記錄.

定義

final 關鍵字是 Java 中的 非通路修飾符 , 可以用來修飾 類、方法 和 變量

作用

final 修飾的

  • 無法被繼承

  • 方法

    無法被重寫(覆寫)

  • 變量

    隻能指派一次

用法

這裡主要記錄 final 應用在 變量 上的一些注意點

常量(final variable) 需要在聲明時 初始化(initialize) , 否則會導緻 編譯時錯誤

/*
    一段用來示範 常量初始化 的 Java 代碼
*/

class Demo 
{ 
	// 1. 直接初始化
	final int THRESHOLD = 5; 
	
	// 2. 執行個體語句塊初始化
	final int CAPACITY; 
	
	// 3. 構造方法初始化
	final int MINIMUM; 
	
	// 1. 直接初始化, 這是個靜态常量
	static final double PI = 3.141592653589793; 
	
	// 4. 靜态語句塊初始化
	static final double EULERCONSTANT; 
	
	// 2. 執行個體語句塊初始化(續) 
	{ 
		CAPACITY = 25; 
	} 
	
	// 4. 靜态語句塊初始化(續)
	static{ 
		EULERCONSTANT = 2.3; 
	} 
	
	// 3. 構造方法初始化(續)
    //
	// 注意!!!
	// 如有多個構造方法
	// 務必在各個方法體中完成該常量的初始化
	public Demo() 
	{ 
		MINIMUM = -1; 
	} 
		
} 
           

 局部常量(Local Final Variable)

當常量在 方法 / 構造器 / 語句塊 内部被聲明時, 它稱作 局部常量

它的 聲明 和 初始化 可以分行完成

final 是局部變量唯一可用的修飾符

class Demo
{ 
	public static void main(String args[]) 
	{ 
		
        // 局部常量 i
		final int i; 
		i = 20; 

		System.out.println(i); 
	} 
}