Jen bych doplil, pokud by string nebyl immutable a mel funkci clear,
append, pak by se vse promitlo i v system.out.print();, ale protoze je
immutable, predana reference je zahozena kazdou upravou a nahrazena
novou.tj obsah starsi reference se nezmeni, ale dochazi ke zkopirovani
puvodni a jeji uprave.
PP
On 03/04/2011 11:09 AM, Martin Kuba wrote:
Dne 3.3.2011 17:34, Tomas Pitner napsal(a):
Tuším, že to bude jistě něco s "ukazateli" (promiňte mi ten výraz,
vím v
Javě nejsou).
Jen pro upřesnění, ukazatele v Javě jsou, jsou to všechny objektové
proměnné. To co v Javě není je ukazatelová aritmetika. Tj. v Céčku jde
udělat
struct bla *p;
struct bla a[10];
p = &a[3]; //p ukazuje na a[3]
p = p + 1; //p ukazuje na a[4]
p++; //p ukazuje na a[5]
kdežto v Javě lze do ukazatele jedině přiřadit jiný ukazatel nebo null.
Při předávání parametrů do metod se předávají všechny parametry hodnotou,
primitivní i objektové, takže při použití
Bla bla = new Bla(1);
nejakaMetoda(bla);
System.out.println(bla);
...
public void nejakaMetoda(Bla par) {
par = new Bla(2);
return;
}
se vytiskne obsah instance inicializované s Bla(1), jelikož se
sice do parametru "par" předala kopie ukazatele na Bla(1) a pak byla v
těle
metody přepsána hodnotou ukazatele na Bla(2), ale na původní proměnnou
"bla"
to nemá vliv.
Makub
--
Petr Prikryl
-----------------------
[email protected]
[email protected]
www.admin24.cz