Discussione: [java] array/vettore
View Single Post
Old 02-07-2007, 12:19   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
se per fare la copia di array di tipi primitivi si fa qualcosa del genere:

int[] v1 = new int[5];
v1[0] = 10;
v1[1] = 12;
v1[2] = 14;
v1[3] = 16;
v1[4] = 18;
int[] v2 = new int[5];

int i = 0;
while(i < v1.lengt) {
v2[i] = v1[i];
}
in modo che i 2 array non condividano memoria,come si agisce quando si tratta di oggetti e facendo v2[i]=v1[i] si crea cmq un secondo riferimento allo stesso oggetto.Ipotzzando che sia una stringa..se la modifica il vettore V2..la modifica si ripercuote anche su v1..per cui equivale a fare un' assegnazione..cioè nn vi è piu diferenza tra l' assegnazione e la deferenziazione.
Parlando in generale, per copiare i valori tra due array, oltre alla strada "fai-da-te", in genere basta usare il metodo System.arraycopy(). Come puoi immaginare, copia i valore o reference pari pari.

Se ti interessa fare una "deep copy" (clonazione profonda), allora devi fare tu un clone() dei singoli oggetti (che naturalmente devono essere clonabili).

Nel caso di String, però non è clonabile (non implementa Cloneable) ma in genere non è un problema e non ha molto senso clonare una stringa. Infatti una stringa è un oggetto immutabile.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso