Movatterモバイル変換


[0]ホーム

URL:


酒と泪とRubyとRailsと

初期化ブロック


Javaの初期化ブロックとstatic初期化ブロックの使い方と実行順序の紹介です。

🗽初期化ブロック

初期化ブロックを使うとオブジェクトの初期化を行うことができます。

import java.util.Date;
publicclassSample{
privatefinal Date date;
{
System.out.println("初期化ブロックの実行");
date =new Date();
}
public DategetDate(){
returnthis.date;
}
publicstaticvoidmain(String[] args){
Sample sample =new Sample();
System.out.println(sample.getDate().toString());
}
}

実行結果は次のとおりです。

初期化ブロックの実行
Sat Apr 22 09:20:20 JST 2017

初期化ブロックとコンストラクタの役割はほぼ同じですが、初期化ブロックの特徴は次のとおりです。

  • すべてのコンストラクタの共通処理を記述可能
  • 匿名クラスの初期化に使用(匿名クラスにはコンストラクタがないため)
Map map =new HashMap() {
{
put(key1, value1);
put(key2, value2);
}
}

🐝static初期化ブロック

static初期化ブロックを使うと、クラスの初期化時に実行できます。

import java.util.Date;
publicclassSample{
privatestaticfinal Date date;
static {
System.out.println("static 初期化ブロックの実行");
date =new Date();
}
publicstaticvoidmain(String[] args){
System.out.println(date.toString());
}
}

実行結果は次のようになります。

static 初期化ブロックの実行
Sat Apr 22 09:33:38 JST 2017

🍮初期化の順序

初期化ブロックやコンストラクタなどの初期化処理は次の順序で実行されます。

  1. フィールド変数へのデフォルト値の代入
  2. static初期化ブロックを親クラス(上)から順に実行
  3. 初期化ブロックを親クラス(上)から順に実行
  4. コンストラクタの呼び出し
classSuperClass{
static {
System.out.println(SuperClassのstatic初期化ブロック);
}
{
System.out.println(SuperClassの初期化ブロック);
}
publicSuperClass(){
System.out.println(SuperClassのコンストラクタ);
}
}

classChildClassextendsSuperClass{
static {
System.out.println(ChildClassのstatic初期化ブロック);
}
{
System.out.println(ChildClassの初期化ブロック);
}
publicChildClass(){
System.out.println(ChildClassのコンストラクタ);
}

publicstaticvoidmain(String[] args){
ChildClass child =new ChildClass();
System.out.println(mainメソッドの実行);
}
}

実行結果は次のようになります。

SuperClassのstatic初期化ブロック
ChildClassのstatic初期化ブロック
SuperClassの初期化ブロック
SuperClassのコンストラクタ
ChildClassの初期化ブロック
ChildClassのコンストラクタ
mainメソッドの実行

🎂参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍

概要はじめに基本概念初心者向け入門資料整数(int, log)文字(char)文字列(String)コレクションと配列マップ(Map)セット(Set)日付(Date)列挙(Enum)バイト(byte)正偽型(boolean)プリミティブ型と参照型Optional型文法修飾子クラスメソッド例外処理初期化ブロック変数インタフェースについてリフレクションswitch文Comparable I/Fアノテーションイテレータ(iterator)Stream API/LambdaSpring Framework概要Hello WorldDI(依存性の注入)アスペクト指向プログラミングデータバインディングと型変換Controllerアノテーションフォーム利用プロパティ(設定値)管理バリデーションライブラリThymeleaf(テンプレート)Lombok(ボイラープレート)Jackson(JSONライブラリ)MyBatis(OR Mapper)JUnit(ユニットテスト)HibernateデザインパターンファクトリパターンシングルトンパターンテンプレートメソッドパターンTipsJavaのBest PracticeJavaのコーディング規約IntelliJ IDEAノウハウJSPについてJava Tips

[8]ページ先頭

©2009-2025 Movatter.jp