首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

【Java 每日一題】20170213:final 變量未初始化編譯錯誤

     編輯:Java 相關知識

題目代碼


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(編譯期常量)


static final int CONST = 100; // 必須聲明時初始化
static final int CONST2; // 錯誤:常量必須顯式初始化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved