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
}
}
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