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

Odpovedet emailem