LoginSignup
3
8

More than 5 years have passed since last update.

クラス定数(static final変数)およびインスタンス定数(final変数)の初期化

Last updated at Posted at 2016-06-18

例:

public class Sample {
    // クラス定数 (static final変数)
    static final int A = 365;
    static final int B;

    // クラス変数 (static変数)
    static int c;

    // インスタンス定数 (final変数)
    final int D = 24;
    final int E;

    // インスタンス変数
    int f;

    static {
        // コンパイルエラー: 初期化済定数の再初期化はできない
        // A = 0;
        // staticイニシャライザ内であればクラス定数の初期化が可能
        B = 366;
        c = 4;
    }

    Sample() {
        // コンパイルエラー: 初期化済定数の再初期化はできない
        // D = 0;
        // コンストラクタ内であればインスタンス定数の初期化が可能
        E = 60;
    // インスタンス変数への代入は当然可能
        f = 7;
    // クラス変数への代入も可能
        c = 100;
    }

    public static void main(String args[]) {
        Sample sample = new Sample();
    }
}
  • クラス定数(static final変数)の初期化は宣言時、あるいはstaticイニシャライザ内で可能(クラスロード時に呼び出されるため)
  • インスタンス定数(final変数)の初期化は宣言時、あるいはコン*ストラクタ内で可能
  • 宣言時に定数を初期化し、加えて再度初期化を行うとコンパイルエラー(初期化の重複)
3
8
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
8