Buonasera a tutti
ora che ho un po' di tempo libero mi son perso un po' in java e mi sono accorto che una cosa che davo per scontata, non mi è chiara.
inizierò a spiegare dall'inizio così da darvi una chiara idea delle mie attuali idee, cosicché poi voi possiate illuminarmi, d'immenso.
quando viene dichiarata una variabile, int numero;, per fare un esempio, il sistema in Runtime riserva nella memoria 32bit per questa variabile, o forse avviene alla sua inizializzazione?
detto questo, che non son sicuro sia corretto al 100%, il nome della variabile, numero, non è altro che un'etichetta, che serve a dare un nome all'indirizzo di memoria che è stato riservato per questa variabile e dove è quindi possibile trovare il suo, o i suoi, valori.
premettendo che fino a qua è corretto, se ne conviene quindi che, quando io assegno un valore alla mia variabile, vado semplicemente a immettere un'informazione nello spazio riservato a tale variabile (non riesco a spiegarmi meglio). provo a fare un esempio. se quando lo spazio viene riservato, viene occupato da 0000000000, poi quando gli assegno, per esempio, 5, allora lo spazio occupato cambierà in 0000500000.
ho provato a buttarla la per spiegare come penso io che funzioni il tutto.
comunque, sperando di essere stato chiaro, se poi faccio una cosa del genere
(scrivo tutto il codice in modo da non fare un papiro)
int numero = 5;
int prova = numero;
numero = 10;
System.out.println(numero + " " + prova);
in output mi restituisce 10 e 5.
la mia perplessità quindi è la seguente:
se una variabile è semplicemente un puntatore in memoria, se io a un puntatore gli dico di puntare a sua volta a un altro puntatore, quando il valore del primo puntatore cambia, dovrebbe cambiare anche quello del secondo puntatore. quindi perché prova vale 5 e non 10?
spero di essermi spiegato bene