Se vuoi vederla così, sì. Ma devi guardare la cosa da un punto di vista più generico. Una variabile puntatore (come si dice in C/C++) o un "reference" di Java è una variabile concettualmente come tutte le altre: ha una sua locazione, una sua dimensione, un suo valore. L'unico fatto è che questo valore ha un significato particolare (e quindi trattato in modo particolare) perché è un "qualcosa" che "fa riferimento" ad un'altra variabile/oggetto.Originariamente inviato da Il Pazzo
ok grazie... ma per quanto riguarda i reference... più o meno mi paredi aver capito si comportino come i puntatori del c... no? cioè a cosa si può paragonare in c il reference?
Mi pare di aver capito dal link che mi hai dato che lo "shallow copy" sia la "copia" tipica del c... cioè... intendo dire che in realtà non fa una copia reale ma semplicemente fa puntare allo stesso indirizzo di memoria i due vettori...
Dunque Vettore1 = vettore2 in java si comporta come in c.....
è corretto?
Quindi quando assegni una variabile di tipo puntatore/reference ad un'altra variabile dello stesso tipo, quello che copi è solo il suo valore, cioè quei pochi bit che sono contenuti nella variabile. Ed è quindi chiaro che poi entrambe le variabili facciano riferimento alla "stessa cosa".
Esatto, perché duplica solo la prima dimensione. Prova questo codice:Originariamente inviato da Il Pazzo
per quanto riguarda il clone().... se lo uso in un array ad 1 dimensione fa la deep copy.... in array multidimensionali fa lo shallow copy...
giusto?
codice:int[][] a2 = { { 1, 2, 3 }, { 4, 5, 6 } }; int[][] b2 = a2.clone (); System.out.println (a2 == b2); // false: la prima dimensione e` "separata" System.out.println (a2[0] == b2[0]); // true: la seconda dimensione non e` separata!! b2[0][0] = 100; // Scrivo su b2 System.out.println (a2[0][0]); // ma lo vedo su a2!!

Rispondi quotando