Salve a tutti,
Mi sto preprando ad un esame universitario di informatica, e mentre studiavo mi é venuto un dubbio scaricando una classe da internet (ammetto di essere uno sfaticato e non mi andava di crearmente una da solo
). Questa classe, chiamata Randomizer, ha la funzione di mischiare gli elementi di un array (si capiva gia dal nome
). Questa classe é (come prevedibile) unstensione della classe Random.
Ora teoricamente dalla mia documentazione il java non presenta il legame per riferimento dei paramentri di un metodo, ovvero le variabili passate come parametri non variano ma vengono "COPIATE" e modificate localmente e poi in caso restituite con il return (si parla ovviamente di parametri esterni e non di variabili contenute nell'oggetto della classe).
Tornando alla classe Randomizer, mi sono trovato davanti un caso che sfugge a questa regola. Vi copio una sintesi di quello che accade:
Corpo di classe Prova:
codice:
public class Prova {
public void prova(int[] i) {
i[0] = 2;
}
}
Corpo del main:
codice:
Prova P = new prova();
int a[] = new int[2];
a[0] = 0;
a[1] = 1;
System.out.println("" + a[0] + a[1]); //Stampa "01"
P.prova(a);
System.out.println("" + a[0] + a[1]); //Stampa "21"
Il codice come vedete é dannatamente semplice, ma ora la domanda: perchè la seconda stampa restituisce "21"? non dovrebbe restiturire nuovamente "01"?
Grazie in anticipo per tutte le vostre risposte