27

これは何ですか?

public class ABC {
   public ABC() {
         System.out.println("world");
   }
   static {
         System.out.println("hello");
   }
}

印刷します:hello world

私はこれ、または静的コードがどのような方法であるかを本当に理解していません。

4

2 に答える 2

59

これは「静的初期化ブロック」と呼ばれます。

クラスが最初にロードされたときに実行されます。1回だけ。

たとえば、クラスがインスタンス化されるたびにコンストラクターが実行されます。静的ブロックは、VM/クラスローダーによって最初に静的にロードされたときに1回だけ実行されます。

于 2009-12-02T22:15:38.517 に答える
10

静的ブロックは、クラスローダーがクラスをロードするたびに1回だけ実行されることに注意してください。これは、複数のクラスローダーがある場合、ブロックが複数回実行される可能性があることを意味します。

于 2009-12-02T23:12:58.720 に答える