Die Geschichte des Java-Initialisierers

Was ist ein Initialisierer?

Ein Prozess, der einmal ausgeführt wird, bevor eine Klasseninstanz verwendet wird. Wird beim Initialisieren von Klassenvariablen verwendet.

class initializer_demo {
	//Klasseninitialisierer
	static {
		//wird bearbeitet
	}
	//Instanzinitialisierer
	{
		//wird bearbeitet
	}
}

Was ist der Unterschied zwischen einem Instanzinitialisierer und einem Konstruktor?

Wenn Sie an den Prozess der Instanziierung denken, können Sie an einen Konstruktor denken. Der Unterschied besteht darin, dass der Instanzinitialisierer vor dem Konstruktor und das Konstrukt nach der Instanziierung ausgeführt wird. Wenn mehrere Konstruktoren überladen sind, scheint der Initialisierer verwendet zu werden, indem zuerst die gemeinsame Verarbeitung ausgeführt wird.

Referenzcode unten

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

    //Klasseninitialisierer
    static {
       User.count = 0;
       System.out.println("Ausführung des Klasseninitialisierers\n↓");
    }

    //Instanzinitialisierer
    {
        System.out.println("Ausführung des Instanzinitialisierers\n↓");
    }

    //Konstrukteur
    public User(String name) {
        this.name = name;
        User.count++;
        System.out.println("Konstruktorausführung\n↓");
    }

    //Klassenmethode
    public static void getInfo() {
        System.out.println(User.count + "Instanziierte Zeiten\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();
    }
}

Ausführungsergebnis

$ java Myapp

Ausführung des Klasseninitialisierers
↓
0 mal instanziiert
↓
Ausführung des Instanzinitialisierers
↓
Konstruktorausführung
↓
Einmal instanziiert
↓
Ausführung des Instanzinitialisierers
↓
Konstruktorausführung
↓
Zweimal instanziiert
↓

Recommended Posts

Die Geschichte des Java-Initialisierers
Statische Java-Geschichte
Java generische Geschichte
Lomboks Java 9+ Support-Story
[Java] Aizu Online Judges Geschichte 2
[Java] Aizu Online Judges Geschichte 1
Java
Java
C # und Java überschreiben Story
[Java Edition] Geschichte der Serialisierung
Wirklich beängstigende (Java Anti-Pattern) Geschichte
Die Geschichte von Java Gold SE8
[Java] Die Geschichte einer wirklich beängstigenden switch-Anweisung
Java lernen (0)
Java studieren ―― 3
[Java] -Array
Java geschützt
[Java] Anmerkung
Geschichte von paiza.jp [Java Standard Input Solution]
[Java] Modul
Java-Array
Java studieren ―― 9
Java Scratch Scratch
Java-Tipps, Tipps
Java-Methoden
Java-Methode
Java (Konstruktor)
Java-Array
[Java] ArrayDeque
Java (überschreiben)
Java (Methode)
Java-Zeichenfolge
Java (Array)
Java-Serialisierung
Java Anfänger 4
JAVA hat bezahlt
Java studieren ―― 4
Java (gesetzt)
Java-Shell-Sortierung
[Java] compareTo
Java studieren -5
JUnit Geschichte
Java reflektierend 获 获 举
Java (Schnittstelle)
Java-Memorandum
Java-Array
Java studieren ―― 1
[Java] Polymorphismus
Java # 0 studieren
Java-Überprüfung
Java-Funktionen
[Java] Vererbung
FastScanner Java
Java-Funktionen
Java-Memo
Java (Kapselung)
Java-Vererbung
[Java] Überladung
Java-Grundlagen