2010-01-15 21 views
12

Ho letto che Java fornisce valori predefiniti alle proprietà della classe ma non alle variabili locali. È corretto? Se sì, qual è la ragione di questo? Quando fai qualcosa di buono, perché non farlo fino in fondo?Valori predefiniti di variabili di istanza e variabili locali

Grazie,
Roger

+1

Handy scheda di riferimento per "Valori iniziali delle variabili": http://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.12.5 – trashgod

+0

possibile duplicato di [Perché sono variabili locali non inizializzato in Java?] (http://stackoverflow.com/questions/415687/why-are-local-variables-not-initialized-in-java) – Raedwald

+0

Ecco un [collegamento aggiornato] (http://docs.oracle .com/javase/specs/jls/se8/html/jls-4.html # jls-4.12.5) per riferimento a trashgod. – jpaugh

risposta

24

variabili locali standard vengono memorizzate nello stack e non sono effettivamente creati fino a quando non vengono inizializzati. Se una variabile locale non viene utilizzata, non va in pila. Le variabili membro, tuttavia, vengono allocate nell'heap e hanno quindi un segnaposto predefinito (riferimento null o primitiva predefinita).

+0

Ottima spiegazione –

1

Il motivo non tecnico dietro può anche essere la seguente:

Se si dichiara una variabile locale si esegue questa operazione, al fine di utilizzarlo. E l'utilizzo è collegato all'assegnazione di un valore. Pertanto, l'accesso a una variabile dichiarata ma non inizializzata non ha molto senso - il programmatore potrebbe semplicemente aver dimenticato di inizializzare la variabile.

I campi, tuttavia, potrebbero essere utilizzati solo fino a dopo un punto specificato nella vita dell'oggetto. Costringere il programmatore a inizializzarli tutti non sarebbe positivo.

Problemi correlati