2010-01-15 12 views
12

J'ai lu que Java fournit des valeurs par défaut aux propriétés de classe mais pas aux variables locales. Est-ce exact? Si oui, quelle est la raison derrière cela? Lorsque vous faites quelque chose de bien, pourquoi ne pas le faire tout le chemin?Valeurs par défaut des variables d'instance et des variables locales

Merci,
Roger

+1

Carte de référence pratique pour les "valeurs initiales des variables": http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5 – trashgod

+0

duplication possible de [Pourquoi les variables locales? non initialisé en Java?] (http://stackoverflow.com/questions/415687/why-are-local-variables-not-initialized-in-java) – Raedwald

+0

Voici un [lien mis à jour] (http://docs.oracle .com/javase/specs/jls/se8/html/jls-4.html # jls-4.12.5) pour la référence de trashgod. – jpaugh

Répondre

24

variables locales standard sont stockées sur la pile et ne sont pas réellement créés jusqu'à ce qu'ils soient initialisés. Si une variable locale n'est pas utilisée, elle ne va pas sur la pile. Les variables membres, cependant, sont allouées dans le tas, et ont donc un espace réservé par défaut (référence nulle ou primitive par défaut).

+0

Meilleure explication –

1

La raison non technique peut également être derrière le suivant:

Si vous déclarez une variable locale que vous faites ceci afin de l'utiliser. Et l'utilisation est liée à l'attribution d'une valeur. Par conséquent, l'accès à une variable déclarée mais non initialisée n'a pas beaucoup de sens - le programmeur peut simplement avoir oublié d'initialiser la variable.

Cependant, les champs ne peuvent être utilisés que jusqu'à un point spécifié de la durée de vie de l'objet. Forcer le programmeur à les initialiser tous ne serait pas bon.

Questions connexes