Lorsqu'un programme Java utilise une classe ou une interface pour la première fois via les 6 méthodes suivantes, le système initialisera la classe ou l'interface.
(1) Créez une instance de la classe. Les méthodes de création d'une instance d'une classe incluent : l'utilisation de l'opérateur new pour créer une instance, la création d'une instance par réflexion et la création d'une instance par désérialisation.
(2) Appelez la méthode de classe (méthode statique) d'une certaine classe.
(3) Accédez à une variable de classe ou à une variable de classe. Ou attribuez une valeur à la variable
(4) Utilisez la réflexion pour forcer la création d'un objet java.lang.Class correspondant à une certaine classe ou interface. Par exemple : Class,forName("Person"), si le système n'a pas initialisé la classe Person, il initialisera d'abord la classe Person, puis renverra l'objet java.lang.Class correspondant à la classe Person.
(5) Initialiser une sous-classe d'une certaine classe. Toutes les classes parentes des sous-classes seront initialisées.
(6) Utilisez directement la commande java.exe pour exécuter une classe principale, et la classe principale est initialisée en premier.
Remarque :
Pour une variable de classe finale, si la valeur de la variable peut être déterminée lors de la compilation, alors cette variable de classe est équivalente à une "variable macro", et le compilateur Java le fera Au moment de la compilation, remplacez directement toutes les occurrences de cette variable de classe par sa valeur. Ainsi, même si le programme utilise des variables statiques, cela n’entraînera pas l’initialisation de la classe. Le code suivant n'imprimera pas le bloc d'initialisation statique
public class Test12 { static final String STRING="宏变量"; static{ System.out.println("静态初始化块"); } } class Test13{ public static void main(String[] args) { System.out.println(Test12.STRING); } }
Au contraire, si la variable de classe modifiée finale ne peut pas être déterminée au moment de la compilation, la valeur de la variable de classe doit être déterminée au moment de l'exécution. Si sa variable de classe est accessible via la classe, cela entraînera la classe. la variable à être est initialisée. (Le code suivant imprimera le bloc d'initialisation statique)
public class Test12 { static final String STRING=""+System.currentTimeMillis(); static{ System.out.println("静态初始化块"); } } class Test13{ public static void main(String[] args) { System.out.println(Test12.STRING); }
Recommandations associées :
Explication détaillée des classes et des conteneurs de la méthode d'initialisation Java
Pourquoi l'affectation ne peut-elle pas être une constante lors de l'initialisation du tableau ?
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!