package Feb2017;
public class Ques0213 {
final int num; // 最終變量未初始化
public Ques0213() {
System.out.println(num + 10);
}
public static void main(String[] args) {
new Ques0213();
}
}
主程序輸出結果?
編譯錯誤:variable num might not have been initialized(變量 num 可能未被初始化)。
final 修飾的實例變量(非常量)必須在聲明時、實例初始化塊、或構造器中顯式初始化,且構造器必須保證初始化。num 未賦值,構造器直接使用 num + 10,編譯器報錯。
// 方式一:聲明時初始化
final int num = 0;
// 方式二:構造器初始化
final int num;
public Ques0213() {
num = 5; // 必須賦值
System.out.println(num + 10);
}
static final int CONST = 100; // 必須聲明時初始化
static final int CONST2; // 錯誤:常量必須顯式初始化