Maison > Java > javaDidacticiel > Blocs d'initialisation statiques et non statiques en Java : quelle est la différence ?

Blocs d'initialisation statiques et non statiques en Java : quelle est la différence ?

Mary-Kate Olsen
Libérer: 2024-12-31 13:33:17
original
675 Les gens l'ont consulté

Static vs. Non-Static Initialization Blocks in Java: What's the Difference?

Bloc de code d'initialisation statique vs bloc de code d'initialisation non statique

En Java, vous pouvez déclarer des blocs de code dans les classes qui s'exécutent pendant le cours initialisation ou instanciation d'objet. Bien que les deux types de blocs de code puissent être utilisés pour effectuer des actions spécifiques, ils diffèrent par leur portée et leur comportement.

Bloc de code d'initialisation statique

Un bloc de code d'initialisation statique est déclaré avec le mot clé static avant l'accolade ouvrante {. Il est associé à la classe elle-même, et non à un objet spécifique. Ce bloc de code n'est exécuté qu'une seule fois, lorsque la classe est chargée par la machine virtuelle Java (JVM). Il est généralement utilisé pour initialiser des constantes au niveau de la classe, telles que des variables finales statiques.

Par exemple :

public class Test {
    private static final int a;
    
    static {
        a = 5;
        doSomething(a);
    }

    private static int doSomething(int x) {
        return (x+5);
    }
}
Copier après la connexion

Dans cet exemple, le bloc d'initialisation statique initialise la variable finale statique a avec la valeur 5 et appelle la méthode doSomething. Puisqu'il est statique, il peut accéder à la variable statique a depuis le bloc.

Bloc de code d'initialisation non statique

Un bloc de code d'initialisation non statique, également connu sous le nom de bloc d'initialisation d'instance, est déclaré sans le mot clé static. Il est associé à un objet et exécuté à chaque fois qu'un objet de cette classe est créé. Ce bloc de code est généralement utilisé pour initialiser des variables au niveau de l'instance ou effectuer toute configuration nécessaire pour l'objet.

Par exemple :

public class Test {
    private int a;
    
    {
        a = 5;
        doSomething(a);
    }

    private void doSomething(int x) {
        // ...
    }
}
Copier après la connexion

Dans cet exemple, le bloc d'initialisation non statique initialise la variable d'instance a avec la valeur 5 et appelle la méthode doSomething. Puisqu'il n'est pas statique, il ne peut accéder qu'aux variables d'instance de l'objet actuel.

Objectif et documentation

Les blocs de code d'initialisation statiques sont utiles pour configurer la classe -des constantes à l'échelle et l'exécution des tâches qui doivent être effectuées pendant le chargement de la classe. Ils peuvent être utilisés pour des tâches telles que la vérification des paramètres d'entrée, l'enregistrement des gestionnaires d'événements ou l'initialisation des cadres de journalisation.

Les blocs de code d'initialisation non statiques sont utilisés pour initialiser les variables au niveau de l'instance et effectuer toute configuration nécessaire pour l'objet. Ils peuvent être utilisés pour des tâches telles que la définition de valeurs par défaut, la validation d'entrées ou la création d'objets enfants.

La documentation sur les blocs de code d'initialisation statiques et non statiques peut être trouvée dans la spécification du langage Java (JLS), en particulier dans les sections couvrant l'initialisation de classe et l'initialisation d'instance.

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