「Java8」クラス用にstatic初期化ブロックを使用するサンプル

環境
JavaSE1.8
Eclipse 2019-12

書式
static{
初期化ブロックコード
}
オブジェクト用の初期化ブロックと同様の仕組みとして、クラス用に static 初期化ブロックがあり、クラス自身の初期化時に実行されます。
static初期化ブロックはstaticメソッドやstatic変数に最初にアクセスする時に実行されます
static初期化ブロックはクラスのインスタンスを最初に生成する時に実行されます
使用例

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.study;
import java.util.Date;
public class InitDemo {
// static変数Date型の宣言
public static final Date ARK_DATE;
// static変数int型の宣言
public static final int LEVEL;
// static初期化ブロック
static {
System.out.println("static初期化ブロックを実行します");
ARK_DATE = new Date(); // 初期化
LEVEL = 12;// 初期化
}
public static void main(String[] args) {
System.out.println("main関数: static変数の値");
System.out.println("結果1: " + ARK_DATE.toString());
System.out.println("結果2: " + LEVEL);
}
}
package com.arkgame.study; import java.util.Date; public class InitDemo { // static変数Date型の宣言 public static final Date ARK_DATE; // static変数int型の宣言 public static final int LEVEL; // static初期化ブロック static { System.out.println("static初期化ブロックを実行します"); ARK_DATE = new Date(); // 初期化 LEVEL = 12;// 初期化 } public static void main(String[] args) { System.out.println("main関数: static変数の値"); System.out.println("結果1: " + ARK_DATE.toString()); System.out.println("結果2: " + LEVEL); } }
package com.arkgame.study;

import java.util.Date;

public class InitDemo {
      // static変数Date型の宣言
      public static final Date ARK_DATE;
      // static変数int型の宣言
      public static final int LEVEL;
      // static初期化ブロック
      static {
            System.out.println("static初期化ブロックを実行します");
            ARK_DATE = new Date(); // 初期化

            LEVEL = 12;// 初期化
      }

      public static void main(String[] args) {
            System.out.println("main関数: static変数の値");
            System.out.println("結果1: " + ARK_DATE.toString());
            System.out.println("結果2: " + LEVEL);
      }

}

実行結果

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
static初期化ブロックを実行します
main関数: static変数の値
結果1: Wed May 11 16:58:12 JST 2022
結果2: 12
static初期化ブロックを実行します main関数: static変数の値 結果1: Wed May 11 16:58:12 JST 2022 結果2: 12
static初期化ブロックを実行します
main関数: static変数の値
結果1: Wed May 11 16:58:12 JST 2022
結果2: 12

 

Java

Posted by arkgame