2009-12-02 9 views
22

Was ist das? WirdJava keine Name statische Methode

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

drucken: hallo Welt

ich das nicht wirklich verstehen, oder welche Art von Verfahren, die statische Code.

Antwort

48

Es wird als "statischer Initialisierungsblock" bezeichnet.

Es wird ausgeführt, wenn die Klasse zuerst geladen wird; nur einmal.

Zum Beispiel wird ein Konstruktor jedes Mal ausgeführt, wenn die Klasse instanziiert wird; Der statische Block wird nur einmal ausgeführt, wenn er vom VM/Klassenlader zum ersten Mal statisch geladen wird.

+0

Siehe [dies] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.7) für die JLS-Beschreibung der statischen Initialisierer und [diese] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4.2) für eine JLS-Beschreibung der Reihenfolge der Initialisierung, die wichtig sein kann. – selig

7

Ich denke, es ist erwähnenswert, dass der statische Block jedes Mal genau einmal ausgeführt wird, wenn ein Klassenlader eine Klasse lädt. Das heißt, wenn Sie mehr als einen Klassenlader haben, kann der Block mehr als einmal ausgeführt werden.

Verwandte Themen