L'histoire de l'initialiseur Java

Qu'est-ce qu'un initialiseur?

Un processus qui est exécuté une fois avant d'utiliser une instance de classe. Utilisé lors de l'initialisation des variables de classe.

class initializer_demo {
	//Initialiseur de classe
	static {
		//En traitement
	}
	//Initialiseur d'instance
	{
		//En traitement
	}
}

Quelle est la différence entre un initialiseur d'instance et un constructeur?

Lorsque vous pensez au processus d'instanciation, le constructeur vient à l'esprit, La différence est que l'initialiseur d'instance est exécuté avant le constructeur et la construction est exécutée après l'instanciation. Lorsqu'il y a plusieurs constructeurs surchargés, l'initialiseur semble être utilisé en exécutant d'abord un traitement commun.

Code de référence ci-dessous

class User {
    private String name;
    public static int count;

    //Initialiseur de classe
    static {
       User.count = 0;
       System.out.println("Exécution de l'initialiseur de classe\n↓");
    }

    //Initialiseur d'instance
    {
        System.out.println("Exécution de l'initialisation d'instance\n↓");
    }

    //Constructeur
    public User(String name) {
        this.name = name;
        User.count++;
        System.out.println("Exécution du constructeur\n↓");
    }

    //Méthode de classe
    public static void getInfo() {
        System.out.println(User.count + "Temps instanciés\n↓");
    }
}

public class MyApp {
    public static void main(String[] args) {
        User.getInfo();
        User ryo = new User("ryo");
        User.getInfo();
        User yu = new User("yu");
        User.getInfo();
    }
}

Résultat d'exécution

$ java Myapp

Exécution de l'initialiseur de classe
↓
Instancié 0 fois
↓
Exécution de l'initialisation d'instance
↓
Exécution du constructeur
↓
Instancié une fois
↓
Exécution de l'initialisation d'instance
↓
Exécution du constructeur
↓
Instancié deux fois
↓

Recommended Posts

L'histoire de l'initialiseur Java
Histoire statique Java
Histoire générique Java
Histoire de support Java 9+ de Lombok
[Java] Aizu Online Judge's story 2
[Java] Histoire du juge Aizu Online 1
Java
Java
Histoire de remplacement C # et Java
[Édition Java] Histoire de la sérialisation
Histoire vraiment effrayante (anti-motif Java)
Histoire du passage de Java Gold SE8
[Java] L'histoire d'une déclaration de commutation vraiment effrayante
Apprendre Java (0)
Étudier Java ―― 3
[Java] tableau
Java protégé
[Java] Annotation
Histoire de paiza.jp [solution d'entrée standard Java]
Module [Java]
Tableau Java
Étudier Java ―― 9
Java scratch scratch
Astuces Java, astuces
Méthodes Java
Méthode Java
java (constructeur)
Tableau Java
[Java] ArrayDeque
java (remplacement)
java (méthode)
Chaîne Java
java (tableau)
Sérialisation Java
java débutant 4
JAVA payé
Étudier Java ―― 4
Java (ensemble)
tri shell java
[Java] compareTo
Étudier Java -5
Histoire de JUnit
java réfléchissant 获 获 举
java (interface)
Mémorandum Java
Tableau Java
Étudier Java ―― 1
[Java] Polymorphisme
Étudier Java # 0
Revue Java
Fonctionnalités Java
[Java] Héritage
FastScanner Java
Fonctionnalités Java
Mémo Java
java (encapsulation)
Héritage Java
[Java] Surcharge
Les bases de Java