Variables et membres non initialisés en Java
Considérez l'extrait suivant :
public class TestClass { private String a; private String b; public TestClass() { a = "initialized"; } public void doSomething() { String c; a.notify(); // This is fine b.notify(); // This is fine - but will end in an exception c.notify(); // "Local variable c may not have been initialized" } }
Bien que "b" et "c" n'est pas initialisé, le compilateur génère une erreur de compilation pour "c" mais pas pour "b". Cette différence provient des règles du langage pour l'initialisation des variables d'instance et des variables locales.
Les variables d'instance de type objet (comme "a" et "b") sont par défaut initialisées à null lorsqu'elles ne sont pas explicitement initialisées. C'est pourquoi l'accès à "b.notify()" n'entraîne pas d'erreur immédiate, car c'est effectivement équivalent à "null.notify()". Cependant, cet accès déclenchera à terme une NullPointerException lors de l'exécution du code.
En revanche, les variables locales de type objet ne sont pas initialisées par défaut. Tenter d'accéder à une variable locale non initialisée, telle que "c", entraîne directement une erreur de compilation. Cette exigence stricte garantit que les variables locales sont toujours correctement initialisées avant d'être utilisées.
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!