Maison > Java > javaDidacticiel > Quel est l'ordre d'initialisation des blocs statiques et d'instance en Java ?

Quel est l'ordre d'initialisation des blocs statiques et d'instance en Java ?

Mary-Kate Olsen
Libérer: 2024-11-25 06:52:18
original
202 Les gens l'ont consulté

What's the Initialization Order of Static and Instance Blocks in Java?

Comprendre l'ordre d'initialisation des blocs statiques et d'instance en Java

En Java, les blocs d'initialisation jouent un rôle crucial dans l'initialisation des champs avant leur utilisation au sein d'un programme. Ces blocs peuvent être statiques ou spécifiques à une instance, et leur exécution suit un ordre bien défini.

Blocs d'initialisation statiques

Les blocs d'initialisation statiques sont exécutés lorsqu'une classe est chargé pour la première fois par la machine virtuelle Java (JVM). Leur ordre d'exécution est déterminé par l'ordre dans lequel les classes sont rencontrées lors du processus de chargement. Plus précisément :

  • Une classe sera initialisée immédiatement avant que l'un des événements suivants ne se produise :

    • Une instance de la classe est créée.
    • Une méthode statique déclarée par la classe est invoquée.
    • Un champ statique déclaré par la classe se voit attribuer un value.

Blocs d'initialisation d'instance

Les blocs d'initialisation d'instance sont exécutés chaque fois qu'une instance d'une classe est créée. Leur ordre d'exécution suit un modèle spécifique :

  • Pour chaque superclasse, ses blocs d'initialisation statiques et ses blocs d'initialisation d'instance sont exécutés dans l'ordre.
  • Les blocs d'initialisation statiques de la classe actuelle sont exécutés .
  • Les blocs d'initialisation d'instance de la classe actuelle sont exécutés.
  • Le constructeur de la classe actuelle est exécuté.

Exemple d'analyse de code

Dans l'exemple de code fourni, la sortie montre l'ordre d'initialisation suivant :

  1. Bloc d'initialisation statique de Grandparent
  2. Bloc d'initialisation statique de Parent
  3. Bloc d'initialisation statique de l'enfant

Cela confirme le principe selon lequel les blocs d'initialisation statiques sont exécutés dans l'ordre dans lequel leurs classes sont rencontrées lors du chargement.

Relation d'initialisation parent-enfant

Bien que l'exemple de code suggère que les blocs parents s'exécutent avant ceux des enfants, ce n'est pas strictement vrai. L'ordre d'initialisation des classes parent et enfant est déterminé par l'ordre de chargement des classes. Il n'est pas garanti que les blocs parents s'exécuteront toujours avant ceux des enfants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal