Porównanie stringów

Odpowiedz Nowy wątek
2020-01-14 13:03

Rejestracja: 1 miesiąc temu

Ostatnio: 1 miesiąc temu

0

Witam, mam problem z poniższym kodem:

import java.util.Scanner;

class test
{
    public static void main(String args[])
    {
        Scanner scan = new Scanner(System.in);
        String s1 = scan.nextLine();
        String s2 = scan.nextLine();
        boolean n = s1 == s2;
        System.out.println(n);
    }
}

Powinno przy wpisaniu dwóch tych samych wartości powinno wypisać true, a wypisuje false. Przy zamienieniu scannera na jakieś stałe stringi to działało normalnie

java comparing strings w Google zwraca ok. 112 milionów wyników ;-) - Patryk27 2020-01-14 13:05

Pozostało 580 znaków

2020-01-14 13:13

Rejestracja: 3 miesiące temu

Ostatnio: 6 dni temu

Lokalizacja: Warszawa

3

Za pomocą operatora == porównujesz tutaj same referencje, czyli czy są to te same obiekty.
Jeśli chcesz porównać zawartość Stringów, używaj metody equals().

Dzięki wielkie, działa - matrix98 2020-01-14 13:22

Pozostało 580 znaków

2020-01-15 08:00

Rejestracja: 2 miesiące temu

Ostatnio: 6 godzin temu

2

Jakby Cię interesowało, dlaczego przy zmianie scannera na "jakieś stałe stringi" działa to poczytaj: https://www.ntu.edu.sg/home/e[...]gramming/java/J3d_String.html

Pozostało 580 znaków

2020-01-15 12:22
Moderator

Rejestracja: 16 lat temu

Ostatnio: 30 minut temu

2

Generalnie WSZYSTKIE obiekty porównuje się przez .equals() i należy sobie to wbić do głowy. Szczególnie, że niektóre klasy mają swoje zabawne internalne cache (np. String czy Integer) i zupełnie przypadkiem == może czasem działać, przez co autor kodu może w ogóle przeoczyć taki błąd. Debugowałem kiedyś taki problem, gdzie wszystko działało ok dopóki liczba requestów była < 128, a potem działy się dziwne rzeczy, właśnie dlatego że ktoś Integer porównywał przez == i działało dopóki wartości szły z cache :)


Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
Pełna zgoda, dodam że enumy można bezpiecznie przez referencje :) - Charles_Ray 2020-01-15 12:42
singletony też ( ͡° ͜ʖ ͡°) - danek 2020-01-15 15:23
@danek: nie pisz tak bo ktoś uwierzy - Shalom 2020-01-15 15:33
Singletony lubię, dlatego zawsze tworzę po parę instancji ;) - kubARek 2020-01-16 09:31

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0