Bonjour,
lorsque le jvn instancie une classe qu'elle est l'ordre de l'exécution, les static méthode, les constructeurs, les constructeurs qu'elle hérite...
Bonjour,
lorsque le jvn instancie une classe qu'elle est l'ordre de l'exécution, les static méthode, les constructeurs, les constructeurs qu'elle hérite...
d'abord la jvm initialise la classe, ca signifie initialiser les champs statique et exécuter les blocs statiques. on fait toujours l'initialisation de classe du parent avant celui de l'enfant. Ensuite, si on a demandé une instance de la classe, on appelle le constructeur de la classe, dont la premier instruction est de déléguer au constructeur du parent qui délègue à sont parent et ainsi de suite jusque Object. Un fois Object fait, on remonte pregressivement pour exécuter le code de construction présent dans l'enfant, puis l'enfant de l'enfant etc jusqu'à remonter à l'appel initial.
merci beaucoup tchize_
juste une petite question, est ce que les variables statiques sont initialiser avant d'exécuter les méthodes statique et est ce que les méthode statique sont exécuter dans leur ordre d'apparition dans la classe ?
![]()
Salut,
Les méthodes statiques sont exécutées quand tu les appelles, pas quand la classe est chargée... SI tu veux exćuter du code statique lorsque la classe est chargée par la JVM il te faut un bloc statique qui ressemble à ceci
Ce code dans le bloc static statique sera exécuté au chargement, mais en aucune facon le code de get ne sera exécuté si tu ne l'appelles pas
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class MaClasse { private static Map<String String> maMap; static { maMap = new HashMap<String, String>(); // je remplis ma map maMap.put("toto", "tata"); ... } public static String get(String key) { return maMap.get(key); } }
J'en profite pour demander la différence entre un initializer static
et un initializer par "défaut" (sans le static) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class MaClasse { private static Map<String String> maMap; static { maMap = new HashMap<String, String>(); // je remplis ma map maMap.put("toto", "tata"); ... } public static String get(String key) { return maMap.get(key); } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 public class MaClasse { private Map<String String> maMap; { maMap = new HashMap<String, String>(); // je remplis ma map maMap.put("toto", "tata"); ... } public String get(String key) { return maMap.get(key); } }
Salut vantom,
Et bien c'est la différence entre static et non static.
C'est soit une variable de classe (unique partagée par toutes les instances de ta classe), soit une variable d'instance (une instance de maMap par instance de MaClasse) -> http://java.developpez.com/faq/java/...motsClesStatic
Partager