Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Dve reference na isti objekat?

[es] :: Java :: Dve reference na isti objekat?

[ Pregleda: 3244 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zdravkod

Član broj: 33092
Poruke: 10
*.yubc.net.



Profil

icon Dve reference na isti objekat?10.02.2006. u 21:47 - pre 221 meseci
Pozdrav,

Imam sledece pitanje/nedoumicu. Interesuje me da li je moguce upravljati istim objektom uz pomoc 2 reference npr.

String s1 = new String("prvi string");
String s2 = s1;

u ovom trenutku ja imam dva objekta koji su isti i imaju vrednost "prvi string". 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".

Zdravko
 
Odgovor na temu

nemnesic
nemnesic
Software Developer
Vranje Florida

Moderator
Član broj: 44355
Poruke: 802
*.com
Via: [es] mailing liste



+64 Profil

icon Re: Dve reference na isti objekat?10.02.2006. u 22:37 - pre 221 meseci
nisam nikada tako nesto radio
ali mislim da je nesto na ovo principu

http://mindprod.com/jgloss/pointer.html


--
Every Problem Has A Solution
 
Odgovor na temu

migoran
Goran Milovanovic
Sarajevo

Član broj: 12275
Poruke: 31
85.158.38.*



Profil

icon Re: Dve reference na isti objekat?10.02.2006. u 23:09 - pre 221 meseci
Mozes pokusati sa nizovima ili StringBuffer klasom.

Code:


String[] s1 = {"Hello"};
String[] s2 = s1;
        
s1[0] = "Hello World!";
System.out.println(s2[0]);

//Hello World!


StringBuffer sb1 = new StringBuffer("Hello");
StringBuffer sb2 = sb1;

sb1.append(" World");
sb2.append("!");

System.out.println(sb1);
System.out.println(sb2);
    
//Hello World!
//Hello World!



Pozdrav,
Goran
 
Odgovor na temu

mucky
Aleksandar Mastilović
Freelancer
Novi Sad - Srbija

Član broj: 237
Poruke: 412
*.ADSL.neobee.net.



+1 Profil

icon Re: Dve reference na isti objekat?10.02.2006. u 23:33 - pre 221 meseci
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 objekte 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 objekte 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 :)
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9514
*.lukoil.co.yu.



+10255 Profil

icon Re: Dve reference na isti objekat?13.02.2006. u 11:32 - pre 221 meseci
Pazi, objekat tipa String je posebna vrsta objekata, spada u vrstu "nepromenljivih" objekata. Nemojte da vas to zbuni. Stringovi su prilicno nezgodni za prezentovanje OO osnova objekat -> referenca, kopiranje reference, kopiranje vrednosti i slicno.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

Java Beograd
Novi Beograd

Član broj: 11890
Poruke: 9514
*.lukoil.co.yu.



+10255 Profil

icon Re: Dve reference na isti objekat?13.02.2006. u 11:40 - pre 221 meseci
Zapravo, glavno je pitanje zasto bi radio ovo:
Code:
String s2 = s1;

? Zasto bi istu referencu cuvao u dve promenljive ?
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

zdravkod

Član broj: 33092
Poruke: 10
*.net
Via: [es] mailing liste



Profil

icon Re: Dve reference na isti objekat?15.02.2006. u 00:07 - pre 221 meseci
Da, shvatio sam da je String drugaciji od ostalih, i da sve lepo
funkcionise za ostale objekte, sem za String

Zdravko
 
Odgovor na temu

p_sasko

Član broj: 47683
Poruke: 90
*.com
Via: [es] mailing liste



Profil

icon Re: Dve reference na isti objekat?16.02.2006. u 14:28 - pre 221 meseci
Nisi probao pravi primer:
Probaj ovako:
String a="1"
String b=null;
b=a;
Pa ispisi (b)
String c="2";
b=c;
Pa ispisi (a,b,c) Bice svi isti sto znaci da pointeri rade sve dok ne kazes
promenljivi (= new ... )
Za String je razlika jedino u tome sto nemoras da kazes (.. =new... ) jer se
i bez toga na to odnosi.

Pozdrav...
 
Odgovor na temu

[es] :: Java :: Dve reference na isti objekat?

[ Pregleda: 3244 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.