Jeśli jesteś podobny do mnie, kiedy po raz pierwszy zacząłem używać Javy, chciałem użyć operatora „==”, aby sprawdzić, czy dwa wystąpienia String są równe, ale na lepsze lub gorsze, nie jest to właściwy sposób na zrobienie tego w Javie.
W tym samouczku pokażę kilka różnych sposobów prawidłowego porównywania ciągów Java, zaczynając od podejścia, którego używam przez większość czasu. Na końcu tego samouczka porównywania ciągów Java również omówię, dlaczego operator „==” nie działa podczas porównywania ciągów Java.
Opcja 1: Porównanie ciągów Java z metodą równości Przez
większość czasu (może w 95% przypadków) porównuję ciągi z metodą równości klasy Java String, jak poniżej:
if (string1.equals(string2))
Ta metoda Ciąg znaków równości sprawdza dwa ciągi Java i jeśli zawierają dokładnie ten sam ciąg znaków, są uważane za równe.
Patrząc na szybki przykład porównania ciągów z metodą równości, gdyby przeprowadzono następujący test, dwa ciągi nie byłyby uważane za równe, ponieważ znaki nie są dokładnie takie same (przypadek znaków jest inny):
String string1 = "foo";
String string2 = "FOO";
if (string1.equals(string2))
{
// this line will not print because the
// java string equals method returns false:
System.out.println("The two strings are the same.")
}
Ale gdy dwa ciągi zawierają dokładnie ten sam ciąg znaków, metoda równości zwróci true, jak w tym przykładzie:
String string1 = "foo";
String string2 = "foo";
// test for equality with the java string equals method
if (string1.equals(string2))
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Opcja 2: Porównanie ciągów z metodą equalsIgnoreCase
W niektórych testach porównania ciągów zignorujesz, czy ciągi znaków są wielkie czy małe. Jeśli chcesz przetestować ciągi pod kątem równości w sposób bez rozróżniania wielkości liter, użyj metody equalsIgnoreCase klasy String, w następujący sposób:
String string1 = "foo";
String string2 = "FOO";
// java string compare while ignoring case
if (string1.equalsIgnoreCase(string2))
{
// this line WILL print
System.out.println("Ignoring case, the two strings are the same.")
}
Opcja 3: Porównanie Java String z metodą CompareTo
Istnieje również trzeci, mniej powszechny sposób porównywania ciągów Java, i to z wykorzystaniem metody StringTerm porównania. Jeśli dwa ciągi są dokładnie takie same, metoda CompareTo zwróci wartość 0 (zero). Oto szybki przykład tego, jak wygląda ta metoda porównywania ciągów:
String string1 = "foo bar";
String string2 = "foo bar";
// java string compare example
if (string1.compareTo(string2) == 0)
{
// this line WILL print
System.out.println("The two strings are the same.")
}
Pisząc o tej koncepcji równości w Javie, należy zauważyć, że język Java zawiera metodę równości w podstawowej klasie Java Object. Ilekroć tworzysz własne obiekty i chcesz zapewnić sposób sprawdzenia, czy dwa wystąpienia Twojego obiektu są „równe”, powinieneś zastąpić (i zaimplementować) tę metodę równości w swojej klasie (w taki sam sposób, jak zapewnia język Java) to zachowanie równości / porównania w metodzie String equals).
Możesz rzucić okiem na to ==, .equals (), CompareTo () i Compare ()