int è composto da 32 bit, quindi pippo occuperà 32 bit da qualche parte sullo stack (è una variabile locale) e quando chiamato viene invocato, verrà creato lo spazio di 32 bit di nuovo da qualche parte sullo stack per pluto (che è un parametro ma comunque sempre una variabile locale).
Nel momento della invocazione, la virtual machine semplicemente copia il valore dei 32 bit di pippo nello spazio di memoria predisposto per pluto. Quindi in effetti entrambe le variabili hanno inizialmente lo stesso valore es. 1000. Ma sono due variabili distinte, quindi se cambi successivamente il valore di pluto, NON cambi il valore di pippo.
È come fare:
int a = 1000;
int b = a;
A questo punto b ed a hanno lo stesso valore. Ma se fai b = 2000; cambi solo b, NON a.
No, non manca niente, lo statement è corretto. Il codice è incompleto, bisogna chiaramente metterlo dentro una classe perché sia usabile (e poi ovviamente invocare chiamante). L'esempio mostra solo un metodo (chiamante) che invoca un altro metodo (chiamato), che dovrebbe servire giusto per capire il passaggio degli argomenti.
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet
Buonasera andbin.
Mi scusi se la disturbo nuovamente.
Non sono in grado di capire questo concetto. Sembra semplice, ma non arrivo alla soluzione.
Se ci rifacciamo al codice iniziale, tratto dal libro su cui studio:
codice:
Il parametro formale "valore" e la variabile locale anch'essa "valore" sono uguali?codice:public class CiProvo { public void cambiaValore(int valore) { valore = 1000; } }
Se SI, perch�?
Quando viene detto:codice:CiProvo ogg = new CiProvo(); int numero = 10; ogg.cambiaValore(numero); System.out.println("il valore del numero � " + numero);
Il parametro valore del metodo cambiaValore() , nel momento in cui � stato eseguito il metodo, non coincideva con la variabile numero, bensi immagazzinava solo la copia del suo valore (10).
Perch�? Il parametro valore era uguale a 1000, e la variabile numero a 10?
Come fa il parametro valore ad immagazzinare la copia del valore della variabile numero?
Grazie mille ancora.![]()
Qui non ci sono due cose .... ma solo una: una singola variabile 'valore' che è il parametro formale del metodo. Ed è comunque locale al metodo, quando il metodo termina, la variabile 'valore' sparisce.
Qui hai una variabile 'numero' che passi al metodo. Ma ribadisco che 'numero' e il parametro 'valore' sono due variabili DIVERSE. Si trovano in locazioni di memoria differenti e ciascuna ha i suoi 32 bit (essendo dei int). Quando si dice che "il parametro riceve una copia del valore" è semplicemente per dire che a basso livello gli N bit che ha e sta passando il chiamante vengono copiati in un'altra locazione di memoria che è quella del parametro. Quindi in effetti avviene che quel valore (10) si trova sia alla locazione di 'numero' che alla locazione di 'valore'.
Andrea, Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
Java Versions Cheat Sheet