KWALIFIKACJA INF2 + INF3 - CZERWIEC 2014

PYTANIE NR 25.
Co oznacza poniższy fragment kodu w języku Java?
Fraktale frak1 = new Fraktale();
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Instrukcja
Fraktale frak1 = new Fraktale();
deklaruje zmienną frak1 typu Fraktale i jednocześnie tworzy nową instancję tej klasy. Operator new alokuje pamięć dla obiektu oraz wywołuje konstruktor Fraktale(), a do zmiennej trafia referencja do utworzonego obiektu (w Javie nie używa się wskaźników).

Pełne wyjaśnienie:

Instrukcja Fraktale frak1 = new Fraktale(); jest klasycznym przykładem tworzenia obiektu w Javie. Składa się z dwóch części: deklaracji oraz inicjalizacji.

  • Fraktale – to typ zmiennej, czyli informacja, jakiego rodzaju obiekt może być przypisany do tej zmiennej.
  • frak1 – nazwa zmiennej, która będzie przechowywać odwołanie do obiektu.
  • new – operator tworzenia obiektu: powoduje przydzielenie pamięci w obszarze heap i przygotowanie miejsca na pola obiektu.
  • Fraktale() – wywołanie konstruktora, który inicjalizuje nowo utworzoną instancję (tu: konstruktor bezparametrowy).

Po wykonaniu instrukcji zmienna frak1 nie przechowuje "samego obiektu", tylko referencję do niego. To ważne rozróżnienie: Java operuje referencjami, a nie wskaźnikami w rozumieniu C/C++ (nie da się wykonywać arytmetyki adresowej ani ręcznie zarządzać pamięcią). Obiekt pozostaje w pamięci tak długo, jak istnieją do niego referencje; później może zostać usunięty automatycznie przez Garbage Collector.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • Stwierdzenie o "wskaźniku" jest mylące: w Javie nie ma wskaźników dostępnych programiście; poprawne pojęcie to referencja.
  • Opis, że to "wywołanie funkcji Fraktale" jest błędny: Fraktale() to konstruktor, a operator new odpowiada za utworzenie instancji.
  • Teza o inicjalizacji bez przypisania obiektu nie pasuje do tej linijki kodu. Taka sytuacja wystąpiłaby przy samej deklaracji, np.
    Fraktale frak1;
    (wtedy nie ma obiektu utworzonego przez new).

W praktyce taka instrukcja pojawia się wszędzie tam, gdzie tworzysz nowe elementy modelu danych, obiekty pomocnicze lub instancje klas realizujących logikę aplikacji.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To utworzenie nowej instancji klasy Fraktale. Operator new przydziela pamięć na obiekt (zwykle w heap) i uruchamia konstruktor Fraktale(), który inicjalizuje pola obiektu.
frak1 przechowuje referencję do obiektu typu Fraktale, a nie cały obiekt. Dzięki temu możesz wywoływać metody na obiekcie, np. frak1.metoda(), dopóki referencja wskazuje na istniejącą instancję.
Referencje w Javie są bezpieczniejsze: nie można wykonywać na nich arytmetyki adresowej ani "manipulować pamięcią" jak w C/C++. Programista nie zarządza ręcznie zwalnianiem pamięci, bo robi to Garbage Collector.
Jeśli w klasie nie zdefiniowano żadnego konstruktora, kompilator może zapewnić konstruktor domyślny bez parametrów. Wtedy zapis new Fraktale() nadal zadziała i utworzy obiekt z wartościami początkowymi pól zgodnymi z Javą.
Fraktale frak1; tylko deklaruje zmienną (referencję) i nie tworzy obiektu. Fraktale frak1 = new Fraktale(); dodatkowo tworzy instancję i przypisuje jej referencję do zmiennej. To częsta przyczyna błędów typu NullPointerException.
Nie. Konstruktor w Javie nie ma typu zwracanego i nie zwraca wartości jak funkcja. To operator new tworzy obiekt, a konstruktor służy do jego inicjalizacji (ustawienia stanu początkowego pól, przygotowania zasobów itp.).
Obiekt może zostać usunięty automatycznie przez Garbage Collector, gdy nie ma już do niego żadnych osiągalnych referencji. Programista nie wywołuje ręcznie zwalniania pamięci; ważniejsze jest pilnowanie, aby nie trzymać niepotrzebnych referencji.
Tak. Jeśli brakuje pamięci na utworzenie obiektu, środowisko uruchomieniowe może zgłosić błąd związany z brakiem pamięci (np. błąd typu Error). W typowych zadaniach egzaminacyjnych kluczowe jest jednak rozumienie, że new tworzy instancję.
Konstruktor ma dokładnie tę samą nazwę co klasa i nie ma typu zwracanego. Zapis new NazwaKlasy() zawsze dotyczy tworzenia obiektu. Metody mają własne nazwy i wywołuje się je na obiekcie, np. frak1.oblicz().
Najczęstsze pomyłki to: używanie terminu "wskaźnik" zamiast "referencja", mylenie konstruktora z funkcją zwracającą wynik oraz założenie, że sama deklaracja zmiennej tworzy obiekt. Warto analizować: typ, nazwę, new i wywołanie konstruktora.
info

To pytanie poprawnie rozwiązuje 80% zdających egzamin. średnio łatwe

Według specjalistów z branży: "Instrukcja Fraktale frak1 = new Fraktale(); deklaruje zmienną frak1 typu Fraktale i jednocześnie tworzy nową instancję tej klasy."

Źródła:

  • Oracle, The Java® Language Specification (JLS), rozdziały dot. class instance creation expressions i constructors (Java SE) – https://docs.oracle.com/javase/specs/ (dostęp 2026-02-28)
  • Oracle, Java Tutorials: "Classes and Objects" – https://docs.oracle.com/javase/tutorial/java/javaOO/ (dostęp 2026-02-28)
  • Oracle, Java Tutorials: "Initializing Fields" / "Providing Constructors" – https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html (dostęp 2026-02-28)

Materiały:

  • Dokumentacja Oracle Java Tutorials: Classes and Objects
  • Java Language Specification – rozdziały o tworzeniu obiektów i konstruktorach
  • Krótkie ćwiczenia: deklaracja vs inicjalizacja (np. porównanie: Fraktale frak1; oraz frak1 = new Fraktale();)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego