Maison > Java > javaDidacticiel > Parlons des initialiseurs d'instance en Java

Parlons des initialiseurs d'instance en Java

黄舟
Libérer: 2017-02-07 11:00:58
original
1297 Les gens l'ont consulté

Cet article donne d'abord un exemple pour explorer ce qu'est un initialiseur de variable d'instance, ce qu'est un initialiseur d'instance et ce qu'est un initialiseur statique. Regardez ensuite comment fonctionnent les initialiseurs d’instance.

1. L'ordre d'exécution

Jetez un œil au code suivant, selon vous, quelle partie sera exécutée en premier ?

public class Foo {
  
    //instance variable initializer 实例变量初始化器
    String s = "abc";
  
    //constructor 构造函数
    public Foo() {
        System.out.println("constructor called");
    }
  
    //static initializer   静态初始化器
    static {
        System.out.println("static initializer called");
    }
  
    //instance initializer 实例变量初始化器
    {
        System.out.println("instance initializer called");
    }
  
    public static void main(String[] args) {
        new Foo();
        new Foo();
    }
}
Copier après la connexion

Le résultat est le suivant :

static initializer called
instance initializer called
constructor called
instance initializer called
constructor called
Copier après la connexion

2. Comment fonctionne l'initialiseur d'instance Java ?

L'initialiseur d'instance dans l'exemple ci-dessus contient une section de code qui imprime les caractères. Pour comprendre comment cela fonctionne, nous pouvons l’imaginer comme le processus d’affectation de variables, ce n’est donc pas difficile à comprendre.

En plus d'attribuer des valeurs comme celle-ci :

int b = 0;
Copier après la connexion

vous pouvez également écrire :

int b;
b = 0;
Copier après la connexion

Par conséquent, les initialiseurs d'instance et les initialiseurs de variables d'instance sont très similaires .

3. Quand l'initialiseur d'instance est-il utilisé ?

Il y a relativement peu de fois où l'initialiseur de force peut être utilisé. Mais parfois il existe une alternative à un initialiseur de variable d'instance, telle que :

  • Le code d'initialisation doit gérer les exceptions

  • Exécution d'une variable d'instance Méthode failed


Bien entendu, ces exigences peuvent toujours être implémentées dans le constructeur. Mais si une classe possède plusieurs constructeurs, vous devez répéter le même code dans chaque constructeur.


Le code écrit dans l'initialiseur d'instance, quel que soit le constructeur que vous utilisez, le code dans l'initialiseur d'instance sera exécuté (on peut dire plus, mais moins utilisé) ).


Un autre scénario d'application pour les initialiseurs d'exemple est celui des classes internes anonymes, car dans ce cas, aucun constructeur ne peut être créé. (Cela pourrait être un bon endroit pour placer le code de journalisation ?)

Ce qui précède concerne le contenu des initialiseurs d'instance en Java. Pour plus de contenu connexe, veuillez prêter attention au site Web chinois de PHP (www.php.cn. )!


Étiquettes associées:
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal