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(); } }
Le résultat est le suivant :
static initializer called instance initializer called constructor called instance initializer called constructor called
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;
vous pouvez également écrire :
int b; b = 0;
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. )!