Static静的ライブラリjavaクラスのマウントを見る


//プログラムが起動すると、このコード(静的ブロックの)が自動的に実行され、userDBにデータが格納されます

static
{
for(int i=0;i<10;i++)
{
UserInfo user=new UserInfo();
user.setName("user"+i);
user.setPassword("pwd"+i);
userDB.put(user.getName(), user);
}
}

「静的ブロック」のコードの特徴は、このクラスがマウントされたときに実行され、一度だけ実行されることです.これは、「静的ブロック」が属性初期化よりも先に実行されることを意味し、他のオブジェクトがDaotoolsのメソッド千を呼び出すと、UsuerDBには予め設定されたデータが保存されます.
分析:
1つのクラスの実行、JVMは以下のいくつかのことをします1、クラスのロード2、リンク3、初期化4、インスタンス化;初期化フェーズでは,静的変数の初期化や静的メソッドの実行などの作業を行う.だから、Classになる.forName(args[0],true,off.getClass().getClassLoader());のtrueがfalseになったとき、JVMにload classの後にinitialの作業を行う必要がないことを伝えます.このように,initialの作業をnewInstanceに遅らせた.したがって、staticブロックは決して「クラスが最初に実体化されたときに一度だけ呼び出される」というものではなく、クラスが初期化されたときに一度だけ呼び出されるべきである.