Zagadka z książki- bardzo bardzo początkujący.

0

Witam,
jestem bardzo bardzo początkującym uczniem programowania. Dopiero zaczynam swoją przygodę. Aktualnie bardzo skrupulatnie i powoli przerabiam książkę "rusz Głową. Java. Wydanie 2"
Jest tam zagadka: Góra problemów. Polecenie do zagadki brzmi: "Po prawej stronie przedstawiony jest prosty program. Kiedy wykonywanie programu dojdzie do: "// dalsze operacje", będą w nim już utworzone pewne obiekty i zmienne referencyjne. Twoim zadaniem jest określenie, które z tych odwołań wskazują na poszczególne obiekty".

class KwizGoraProblemow {
int id = 0;
public static void main (String[] args) {
 int x = 0;
 KwizGoraProblemow [] kwz = new KwizGoraProblemow[5];
while (x < 3) {
   kwz[x] = new KwizGoraProblemow();
   kwz[x].id = x;
   x = x + 1;
}
kwz[3] = kwz[1];
kwz[4] = kwz[1];
kwz[3] = null;
kwz[4] = kwz[0];
kwz[0] = kwz[3];
kwz[3] = kwz[2];
kwz[2] = kwz[0];

//dalsze operacje
}
}

Rozumiem ze powstaly 3 obiekty i rozumiem, że powstały 5 odniesienia do tych obiektów. Nie rozumiem kompletnie rozwiazania iz kwz[0] nie odnosi sie do niczego, kwz[1] odnosi sie do obieku id=1, kwz[2] do zadnego, kwz[3] do id =2 i kwz[4] do id = 0. Czy ktoś mógłby wytłumaczyć kompletnemu laikowi o co w tym wszystkim chodzi.

Bardzo dziękuje za pomoc.

3

Chodzi tutaj o wiersz:

kwz[3] = null;

a potem

kwz[0] = kwz[3];    //czyli kwz[0] == null

i

kwz[2] = kwz[0];   //i tu też kwz[2] == null
2

Reszta obiektów:

kwz[4] = kwz[1];
...
kwz[4] = kwz[0];

Stąd w kwz[4] jest obiekt o id == 0, a w kwz[1] jest id == 1 bo nigdzie nie ma zmiany referencji tej komórki.

0

Bardzo dziękuje :)

1

Jakbym zobaczył taką zagadkę w książce to bym ją wyrzucił.
Ta zagadka ma bardzo mało wspólnego z programowaniem, tyle samo się nauczysz szukając wyjścia z labiryntu w książeczce dla dzieci

0

Wiesz co, jestem na poczatku swojej drogi. nie znam na razie innej drogi. Szukam ich. Mimo glupich zagadek podstawy sa bardzo fajnie opisane.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.