2009-12-02 17 views
22

¿Qué es esto?Java sin nombre método estático

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

imprimirá: hola mundo

yo no entiendo muy bien esto, o qué tipo de método que es de código estático.

Respuesta

48

Se denomina "bloque de inicialización estática".

Se ejecuta cuando la clase se carga por primera vez; sólo una vez.

Por ejemplo, un constructor se ejecutará cada vez que se crea una instancia de la clase; el bloque estático solo se ejecuta una vez, cuando el VM/Class lo carga por primera vez estáticamente.

+0

Consulte [this] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.7) para la descripción JLS de los inicializadores estáticos y [esto] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4.2) para una descripción de JLS del orden de inicialización, que puede ser importante. – selig

7

Creo que vale la pena señalar que el bloque estático se ejecutará exactamente una vez cada vez que un cargador de clases carga una clase. Esto significa que si tienes más de un cargador de clases, el bloque puede ejecutarse más de una vez.

Cuestiones relacionadas