(mi permetto d'intromettermi)Originariamente inviato da Jamie04
perché p viene buttato via? quando termina un metodo viene liberato lo stack occupato dalle sue variabili?
ti ringrazio, ora finalmente ho capito![]()
quindi, con gli oggetti succede l'esatto contrario? il valore modificato viene mantenuto?
grazie!
Sì, la vita delle variabili locali termina quando di esce dal blocco all'interno del quale sono state definite, in questo caso il metodo. E sì, i metodi possono modificare i parametri che ricevono se essi sono oggetti, ed ovviamente se tali oggetti sono modificabili (chiaro che non si possa modificare una variabile privata di un oggetto se esso non fornisce i metodi per farlo). Ma in realtà non succede niente di diverso: le variabili di tipi primitivi contengono il dato vero e proprio, mentre le variabili che hanno per tipo una qualche classe contengono l'indirizzo dell'oggetto, non l'oggetto: quindi copiando un tipo primitivo copi il valore (e le modifiche vengono effettuate sulla copia e non sull'originale) mentre copiando un oggetto quello che viene copiato e il riferimento a quest'oggetto, risultando quindi in un solo ed unico oggetto in memoria puntato da entrambi i riferimenti: per questo l'oggetto può essere modificato tramite entrambi i riferimenti.
Probabilmente dei disegni aiutano: http://stackoverflow.com/a/12429953/1202636

Rispondi quotando