2009-12-02 4 views
22

Что это?Java no name static method

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

Напечатает: привет мир

Я не очень понимаю это, или какой метод, который статический код является.

ответ

48

Это называется «статический блок инициализации».

Он запускается, когда класс загружен первым; только один раз.

Например, конструктор будет запускаться каждый раз при создании экземпляра класса; статический блок запускается только один раз, когда он сначала загружается статически загрузчиком VM/Class.

+0

См. [Это] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.7) для описания статических инициализаторов JLS и [этого] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4.2) для описания JLS порядка инициализации, что может быть важно. – selig

7

Я думаю, что стоит отметить, что статический блок будет выполняться ровно один раз, каждый раз, когда загрузчик классов загружает класс. Это означает, что если у вас более одного загрузчика классов, блок может выполняться несколько раз.