Zagadka ze Stringami

Stosunkowo prosta lecz ciekawa zagadka dotycząca klasy String. Dlaczego po uruchomieniu poniższego kodu otrzymujemy:


Oto kod zagadki.

Powodzenia:)

3 komentarze to “Zagadka ze Stringami”

  • dembol pisze:

    daje poniższy rezultat

    Jak widzimy drugi string został sklejony podczas kompilacji i zapisany w puli stringów (jest on identyczny ze stringiem pierwszym, więc tak naprawdę oba zostały zapisane na tej samej pozycji). Z kolei trzeci string został sklejony z wykorzystaniem StringBuffera. Całe wyrażenie zostało zamienione na new StringBuilder(String.valueOf("Barista")).append(b1.length()).toString() co w wyniku daje nowy obiekt, stąd false podczas porównywania referencji.

    Potwierdzenie daje nam specyfikacja Javy, "15.18.1. String Concatenation Operator +"

    If only one operand expression is of type String, then string conversion (§5.1.11) is performed on the other operand to produce a string at run-time.

  • kubale pisze:

    Dembol, marnujesz się w WP 😉
    I w dodatku chcą Was sprzedać za 2/3 ceny ;P

  • dembol pisze:

    Da się na tym portalu jakoś zalajkować wypowiedź? Chętnie bym to zrobił dla powyższego komentarza 😉

Leave a Reply

Szukaj
Facebook
Prenumerata

Podaj adres email aby otrzymywać info o nowych wpisach.

Kategorie