Porównywanie obiektów typu String w języku Java może być realizowane na dwa główne sposoby: za pomocą operatora == oraz metody equals(). Oba podejścia służą do sprawdzania, czy dwa stringi są “takie same”, ale różnią się fundamentalnie w tym, jak interpretują znaczenie “takie same”.
Porównanie za pomocą ==
Operator == porównuje referencje, czyli adresy w pamięci, pod którymi znajdują się obiekty. W przypadku stringów, == zwróci true tylko wtedy, gdy obie zmienne wskazują dokładnie na ten sam obiekt w pamięci.
Porównanie za pomocą equals()
Metoda equals(), zdefiniowana w klasie Object i przesłonięta w klasie String, porównuje zawartości dwóch stringów. Jeśli oba ciągi znaków są identyczne znak po znaku, equals() zwróci true, niezależnie od tego, czy stringi są przechowywane w tej samej lokalizacji pamięci.
Przykład kodu
Przygotujmy teraz przykład, który pokaże różnice w działaniu obu podejść. W przykładzie porównamy dwa stringi – jeden stworzony przez literał, a drugi przez wywołanie konstruktora.
public class StringComparison {
public static void main(String[] args) {
// String utworzony przez literał
String str1 = "Hello";
// String utworzony przez new - nowy obiekt w pamięci
String str2 = new String("Hello");
// Porównanie za pomocą ==
// Sprawdza czy str1 i str2 to ten sam obiekt w pamięci
System.out.println("Porównanie przez ==: " + (str1 == str2)); // false
// Porównanie za pomocą equals()
// Sprawdza czy zawartość str1 i str2 jest taka sama
System.out.println("Porównanie przez equals(): " + str1.equals(str2)); // true
}
}
Analiza kodu
str1 == str2zwracafalse, ponieważstr1jest referencją do obiektu w puli stringów (intern pool), gdzie Java przechowuje swoje literały, astr2jest referencją do obiektu utworzonego na stercie za pomocą słowa kluczowegonew.str1.equals(str2)zwracatrue, ponieważ metodaequalsporównuje wartości znaków obu stringów, które są identyczne.
Podsumowanie
Podczas pracy ze stringami w Javie kluczowe jest zrozumienie różnicy między == a equals(). Używając ==, sprawdzamy, czy oba obiekty wskazują na to samo miejsce w pamięci. Metoda equals() jest natomiast używana do porównania rzeczywistej zawartości stringów. Znajomość tej różnicy jest niezbędna, aby uniknąć błędów w logice porównywania danych w aplikacjach.
Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

