2010-01-15 19 views
12

He leído que Java proporciona valores predeterminados para las propiedades de clase pero no para las variables locales. ¿Es eso correcto? Si es así, ¿cuál es la razón detrás de esto? Cuando estás haciendo algo bueno, ¿por qué no hacerlo todo el camino?Valores predeterminados de variables de instancia y variables locales

Gracias,
Roger

+1

Tarjeta de referencia útil para "Valores iniciales de variables": http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5 – trashgod

+0

posible duplicado de [¿Por qué son variables locales? no inicializado en Java?] (http://stackoverflow.com/questions/415687/why-are-local-variables-not-initialized-in-java) – Raedwald

+0

Aquí hay un [enlace actualizado] (http://docs.oracle .com/javase/specs/jls/se8/html/jls-4.html # jls-4.12.5) para referencia de trashgod. – jpaugh

Respuesta

24

variables locales estándar se almacenan en la pila y no se crea realmente hasta que se inicializan. Si no se usa una variable local, no entra en la pila. Sin embargo, las variables de miembro se asignan en el montón y, por lo tanto, tienen un marcador de posición predeterminado (referencia nula o primitiva predeterminada).

+0

Mejor explicación –

1

La razón no técnica detrás también puede ser el siguiente:

Si se declara una variable local que hace esto con el fin de usarlo. Y el uso está relacionado con la asignación de un valor. Por lo tanto, acceder a una variable declarada pero no inicializada no tiene mucho sentido: el programador podría simplemente haber olvidado inicializar la variable.

Los campos, sin embargo, solo se pueden usar hasta o después de un punto específico en la duración del objeto. Obligar al programador a inicializarlos no sería bueno.

Cuestiones relacionadas