また開発者として知っていけないことを知らなかった。

googleさんに

「static 変数名省略 java」

とか

「static {} java」

とか

「static 変数無し java」

とかで聞いても何もひっかかりやしねぇ。


恥ずかしい検索履歴を残してしまった。

で正式名称?は
その名も

「静的ブロック」

というらしい。

ググりづらいんで、ぜひとも改名して頂きたい。



package test.prj;
import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class Tstprj4Servlet extends HttpServlet {

  // 静的ブロック
static {
System.out.println("static block");

}

// Getメソッド
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
System.out.println("doGet");
resp.setContentType("text/plain");
resp.getWriter().println("Hello, world");
}
}

これのdoGetを呼び出したらコンソールに
static block
doGet

の順番で表示された。(呼び出し1回目)

もう一回呼び出したらコンソールに
doGet
のみが表示された。(呼び出し2回目)

さらに別のブラウザから呼び出しても
doGet
のみが表示された。(呼び出し3回目)

ということで、サーバ起動後(JVM起動後)1発目のみ一番最初に走る?

まぁstaticだからね。。。