Citat:
zdravkod:
String s1 = new String("prvi string");
String s2 = s1;
u ovom trenutku ja imam dva objekta koji su isti i imaju vrednost "prvi string".
Mislim da je izuzetno vazno da ti kazem (iako rizikujem da ispadnem cepidlaka, sto uopste nije slucaj) da si pogresio kada si rekao da imas dva objekta, i da je to kardinalna greska koja dovodi do konfuzija u vezi objekata i pointera, kao sto je ova tvoja.
Code:
String s1 = new String("prvi string");
Ova naredba radi sledece:
1) Deklarishe
pointer na objekt
e tipa String (to je deo "String s1")
2) Kreira novi objekat tipa String, sa vrednoshcu "prvi string" (to je deo "new String("prvi string") ")
3) Dodeljuje adresu novonastalog objekta u pointer s1.
Code:
String s2 = s1;
Ova naredba radi sledece:
1) Deklarishe
pointer na objekt
e tipa String (to je deo "String s2")
2) Dodeljuje vrednost pointera s1 pointeru s2 (tj. efektivno chini da pointer s2 pokazuje na isti String objekat na koji pokazuje i s1)
Dakle, kao sto si video, do ovog trenutka ti imas
samo jedan objekat tipa String i dva pointera na taj isti objekat.
Citat:
E, sad kad kazem
s1 = "nesto";
imam da s1 ima vrednost "nesto", s2 je i dalje "prvi string". Mene interesuje da li je moguce izvesti da i s1 i s2 pokazuju na jedan isti objekat tako da prethodna naredba kao rezultat ima da i s1 i s2 imaju vrednost "nesto".
Ako si razumeo ono sto sam napisao ranije u poruci, razumeces da to sto ti zelis nije moguce, jer se u promenljivim s1 i s2 ne sadrze vrednosti objekata tipa String, nego samo
adrese tih objekata, tako da ako zelis da oba pointera pokazuju na jedan te isti objekat, moras uvek dodati i ono
Code:
s2 = s1;
Eto toliko, nadam se da ti se malo sjasnio chitav sistem objekata i pointera (pokazivacha) na iste :)