
Kazalcev
ni - vse so kazalci
 |
Ko
deklariramo nek objekt, deklariramo v bistvu ročico (handle) na
ta objekt (kazalec). |
 |
Objekt
moramo potem eksplicitno narediti z ukazom new. |
class test {
public static void main(String argv[ ]) {
Alien a; // ročica na Alien objekt
Alien b[ ]; // polje ročic na Alien objekt
a=new Alien(); // naredimo objekt
b=new Alien[10]; // naredimo polje ročic na Alien
for (int i=0;i<10;i++)
b[i]=new Alien(); // naredimo posamezne Alien objekte
}
}

Prenašanje
argumentov metodam
 |
Če
objekte podajamo kot argumente metodam, se vedno prenesejo po referenci
in ne po vrednosti. Osnovni tipi se vedno prenesejo po vrednosti |
class Alien {
int x;
}
class KillAlien {
void kill(Alien a) {
a.x=0;
}
void changeValue(int i) {
i=10;
}
}
class test {
public static void main(String argv[ ]) {
Alien a=new Alien();
a.x=10;
KillAlien ka=new KillAlien();
System.out.println("A prej " + a.x);
ka.kill(a); // argument je objekt
System.out.println("A potem " + a.x);
int j=1;
System.out.println("j prej " + j);
ka.changeValue(j); // argument je osnovni tip
System.out.println("j potem " + j);
}
}

Prirejanje
objektov
 |
Če
želimo narediti duplikat nekega objekta, moramo oba objekta narediti z
new
in
nato prekopirati vrednosti. Izraz a=b ne naredi kopije objekta b!!! |
class Alien {
int x;
}
class test {
public static void main(String argv[ ]) {
Alien a=new Alien();
Alien b;
b=a; // še vedno imamo le en objekt; obe ročici kažeta nanj
a.x=5;
b.x=10; // ker je objekt le en, se bo tudi pri a-ju spremenila vr.
System.out.println(a.x); // obakrat se bo izpisala 10
System.out.println(b.x);
b=new Alien(); // naredimo nov objekt
a.x=5;
b.x=10;
System.out.println(a.x); // izpisali se bosta različni vrednosti
System.out.println(b.x);
}
}
