ID: 2915 OOP - Podstawy Średnie

Źródło: Arkusze CKE

Jaki będzie wynik działania poniższego kodu w języku Java?
String a = "hello";
String b = "hello";
String c = new String("hello");
System.out.println(a == b);
System.out.println(a == c);
System.out.println(a.equals(c));

Warianty odpowiedzi

  1. A

    true, true, true

  2. B

    true, false, true

  3. C

    true, false, false

  4. D

    false, false, true

Wyjaśnienie

W Javie operator == porównuje referencje (adresy w pamięci), a metoda equals sprawdza faktyczną zawartość obiektów.

Zmienne a oraz b powstały jako literały, więc Java umieszcza je w tak zwanej puli stringów i kieruje obie zmienne na ten sam obiekt w pamięci. Dlatego a == b daje true.

Zmienna c powstała przy użyciu operatora new, co zmusza środowisko do utworzenia nowego, osobnego obiektu na stercie. Adresy są różne, więc a == c daje false.

Na koniec metoda equals porównuje sam tekst, a ponieważ w obu przypadkach jest to hello, otrzymujemy true.

Sprawdź się w praktyce

Rozwiąż pełny test próbny INF.04 albo wylosuj pojedyncze pytanie na szybką powtórkę.

Podobne pytania — OOP - Podstawy