static_initializer

static_initializer 
      ::= 
      "static" statement_block 

[rule list]
This rule is called by

-> field_declaration

Explications

Il est possible d'exécuter un bloc d'instructions automatiquement au moment du chargement de la classe, afin d'initialiser des variables de classe par exemple. Cette construction peut être utilisée pour calculer des constantes complexes.

L'exemple ci-dessous calcule la somme des carrés de 1 à 10 et la place dans la variable carres, qui pourra ensuite être utilisée par les futures instances de la classe.

Exemple

class static_initializer {

    static int carres;
    
    static {
        for (int i = 0;i <= 10;i++)
            carres += i*i;
    }
    
    public static void main(String args[]) {
        System.out.println("la somme des carres de 1 a 10 vaut "+carres);
    }
}

Exécution

la somme des carres de 1 a 10 vaut 385

Attention !

Il ne faut pas confondre un bloc d'initialisation statique avec le constructeur d'une classe. En effet, le bloc d'initialisation ne peut pas travailler sur des variables d'instance, puisqu'au moment de son exécution, il n'existe pas encore d'instance de la classe.
Index général - Index concepts - Règles BNF
© 1996, DIP Genève, Alexandre Maret & Jacques Guyot
page générée Fri Jun 21 15:41:11 MET DST 1996