Le code entre les accolades est instance initializer.
De The Java Language Specification, Third Edition, Section 8.6:
Un exemple initialiseur déclaré dans une classe est exécutée lorsqu'une instance de la classe est créé (§15.9), tel que spécifié dans §8.8.5.1.
Si la classe Name
est exécutée, la méthode public static void main(String[])
est appelée par la machine virtuelle Java, mais la classe est Name
n'est pas instancié, de sorte que le code dans l'initialiseur instance ne sera jamais exécutée.
Il y a aussi un static initializer, qui est similaire en apparence à la initialiseur instance, mais il a le mot-clé static
devant:
static {
// Executed when a class is first accessed.
}
Encore une fois, de The Java Language Specification, Third Edition, Section 8.7:
Tous les initialiseurs statiques déclarés dans une classe sont exécutés lorsque la classe est initialisée et, avec tout initialiseurs de champ (§8.3.2) pour les clas s variables, peuvent être utilisées pour initialiser les variables de classe de la classe (§12.4).
La page Initializing Fields de The Java Tutorials a également des informations sur les blocs de initialiseur statiques et d'instance.
Pourquoi voudriez-vous attendre à exécuter? –
le puzzle de l'énigme m'intrigue – NomeN