So vergleichen Sie zwei Strings in Java
Methoden zum Vergleichen von Zeichenfolgen in Java
Java bietet verschiedene Methoden, die Sie nutzen kรถnnen, um zwei Zeichenfolgen zu vergleichen in Java. Stringvergleich in Java ist eine Funktion, die eine Zeichenfolge einer Zeichenfolge zuordnet.
Um zu erfahren, wie man Zeichenfolgen vergleicht in Javakรถnnen Sie die von den folgenden Klassen bereitgestellten Methoden verwenden.
- String-Klasse aus der Java.lang-Paket.
- Klasse Objekte aus der Java.util-Paket.
- StringUtils-Klasse aus dem Paket org.apache.commons.lang3.
Die meisten davon Java Vergleichsmethoden fรผr Zeichenfolgen haben Lรถsungen, um den Fall zu ignorieren. In diesem Java Tutorial lernen Sie die verschiedenen Methoden kennen, mit denen Sie zwei Zeichenfolgen vergleichen kรถnnen.
Methode 1: String-equals()-Methode
Die Java Schnur equal()-Methode vergleicht zwei String-Objekte auf gleiche String-Werte.
Syntax:
public boolean equals(Object anObject)
Parameter der Methode equal():
anObject โ Die Argumentzeichenfolge zum Vergleichen von Zeichenfolgen.
Rรผckgabetypen der Methode equal()
- Gibt true zurรผck, wenn das angegebene String-Literal mit dem ersten String รผbereinstimmt.
- Gibt โfalseโ zurรผck, wenn die erste Zeichenfolge nicht mit der Argumentzeichenfolge รผbereinstimmt.
Ejemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: "+stringOne.equals(stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: "+stringOne.equals(stringThree));
}
}
Erwartete Ausgabe:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Erlรคuterung:
- Sie haben in der letzten Ausgabe โfalseโ erhalten, weil das angegebene Objekt eine andere Groร-/Kleinschreibung hat.
Hinweis: Verwenden Sie die String-Equals-Methode fรผr den String-Vergleich unter Beachtung der Groร-/Kleinschreibung. Verwenden Sie die Methode โequalsIgnoreCaseโ, um String-Objekte mit unterschiedlichen String-Werten zu vergleichen.
Methode 2: Objects equal()-Methode
Die Java Objekte sind gleich () Die Methode vergleicht zwei Zeichenfolgenobjekte, um herauszufinden, ob sie dieselben Werte haben.
Syntax:
public static boolean equals(Object a, Object b)
Parameter der Methode equal()
a โ Argumentzeichenfolge fรผr das erste Zeichenfolgenobjekt.
b โ Argumentzeichenfolge fรผr das zweite Zeichenfolgenobjekt.
Rรผckgabetypen der Methode equal()
- Gibt true zurรผck, wenn die String-Literale gleich sind. Die รbergabe eines Nullwerts in den beiden Argumenten gibt ebenfalls โtrueโ zurรผck.
- Gibt โfalseโ zurรผck, wenn die Zeichenfolgenliterale nicht gleich sind.
Ejemplo:
import java.util.Objects;
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringOne, stringTwo));
String stringThree = null;
String stringFour = null;
System.out.println("is Guru99 equal to Guru99: " + Objects.equals(stringThree, stringFour));
}
}
Ausgang:
is Guru99 equal to Guru99: true is Guru99 equal to Guru99: true
Erlรคuterung:
Anhand dieses Beispiels kรถnnen Sie erkennen, dass die Ausgabe ein boolescher Wert von โtrueโ ist, da die verglichenen Zeichenfolgen gleich sind.
Methode 3: String-compareTo()-Methode
Die Java Zeichenfolge vergleichen mit() Die Methode vergleicht zwei Zeichenfolgen in alphabetischer Reihenfolge. Dies wird normalerweise als lexikografische Reihenfolge bezeichnet.
Syntax:
public int compareTo(String str)
Parameter der Methode โcompareTo()โ.
str โ Die Zeichenfolge, die mit der aktuellen Zeichenfolge verglichen werden soll.
Die Methode โcompareTo()โ gibt zurรผck
- 0 โ Gibt Null zurรผck, wenn das angegebene Objekt gleich der aktuellen Zeichenfolge ist.
- < 0 โ Gibt eine Zahl kleiner als Null zurรผck, wenn diese Zeichenfolge kleiner als das angegebene Objekt ist.
- > 0 โ Gibt eine Zahl grรถรer als Null zurรผck, wenn diese Zeichenfolge die angegebene Zeichenfolge รผberschreitet.
Ejemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + stringOne.compareTo(stringTwo));
String stringThree = "GURU99";
// u = 117, U = 85, result = 117-85 = 32
System.out.println("is Guru99 equal to GURU99: " + stringOne.compareTo(stringThree));
}
}
Erwartete Ausgabe:
is Guru99 equal to Guru99: 0 is Guru99 equal to GURU99: 32
Erlรคuterung:
Das erste Ergebnis gibt den Wert Null zurรผck, da die erste und die zweite Zeichenfolge gleich sind.
Das zweite Ergebnis gibt einen Wert von zweiunddreiรig zurรผck, da die Zeichen unterschiedlich sind.
Hinweis: Um die Fรคlle zu ignorieren, kรถnnen Sie die Methode โcompareToIgnoreCaseโ verwenden.
Methode 4: StringUtils-equals()-Methode
Die Java StringUtils ist gleich() Methode vergleicht die Gleichheit zweier Zeichenfolgen.
Stellen Sie sicher, dass Sie die Bibliothek โorg.apache.commons.lang3โ zu Ihrem Programm hinzugefรผgt haben. Dadurch kรถnnen Sie Zeichenfolgen mithilfe der StringUtil-Methoden vergleichen.
Verwenden Sie dies fรผr Maven-Projekte Entwicklung um die Bibliothek zum Projekt hinzuzufรผgen.
Wenn Sie die Bibliothek jedoch ohne Build-Tools hinzufรผgen mรถchten, verwenden Sie diese Entwicklung.
Syntax:
public static boolean equals(CharSequnce cs1, CharSequence cs2)
StringUtils-equals()-Methodenparameter
- cs1 โ Eine Zeichenfolge fรผr das erste Argument.
- cs2 โ Eine Zeichenfolge fรผr das zweite Argument.
Die Methode โequals()โ von StringUtils gibt zurรผck
- Gibt โtrueโ zurรผck, wenn der Zeichenfolgenvergleich gleich ist. Dies gilt, wenn Sie in den beiden Argumenten einen Nullwert รผbergeben.
- Gibt โfalseโ zurรผck, wenn der Zeichenfolgenvergleich nicht gleich ist.
Ejemplo:
import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + StringUtils.equals(stringOne, stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 equal to GURU99: " + StringUtils.equals(stringOne, stringThree));
}
}
Ausgang:
is Guru99 equal to Guru99: true is Guru99 equal to GURU99: false
Erlรคuterung:
Da der Inhalt der ersten und zweiten Zeichenfolge gleich ist, gibt das Ergebnis โtrueโ zurรผck.
Sie kรถnnen die Methode โequalsIgnoreCaseโ verwenden, um die Groร-/Kleinschreibung zu ignorieren.
Methode 5: StringUtils equalAny()-Methode
Die Java StringUtils ist gleichAny() Die Methode prรผft, ob in den Argumenten eine Zeichenfolge vorhanden ist.
Syntax:
public static boolean equalsAny(CharSequence string, Charsequenceโฆ searchStrings)
StringUtils-equalsAny()-Methodenparameter
- string โ Der Stringwert fรผr das erste Argument. Das Argument kann auch einen Nullwert haben.
- searchStrings โ Eine Reihe von Zeichenfolgenargumenten fรผr die Methode, um herauszufinden, ob die erste Argumentzeichenfolge vorhanden ist.
Die StringUtils-Methode equalAny() gibt zurรผck
- Gibt โtrueโ zurรผck, wenn die zu vergleichende Zeichenfolge in der variablen Anzahl von Suchzeichenfolgen vorhanden ist. Dies gilt, wenn beide Argumente null sind.
- Gibt โfalseโ zurรผck, wenn die zu vergleichende Zeichenfolge mit keiner Zeichenfolge in der variablen Anzahl von Suchzeichenfolgen รผbereinstimmt.
Ejemplo:
import org.apache.commons.lang3.StringUtils;
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String[] stringTwo = new String[] {
"Guru99",
"JavaGuru99"
};
System.out.println("is Guru99 available: " +
StringUtils.equalsAny(stringOne, stringTwo));
String[] stringThree = new String[] {
"GURU99",
"JavaGuru99"
};
System.out.println("is GURU99 available: " +
StringUtils.equalsAny(stringOne, stringThree));
}
}
Ausgang:
is Guru99 available: true is GURU99 available: false
Erlรคuterung:
Da der Inhalt der ersten Zeichenfolge und der zweiten Zeichenfolge gleich ist, gibt das Ergebnis โtrueโ zurรผck. Sie kรถnnen die Methode โequalsAnyIgnoreCaseโ verwenden, um die Groร-/Kleinschreibung zu ignorieren.
Methode 6: Verwenden des ==-Operators
Der ==-Operator fรผr Zeichenfolgen prรผft, ob Objektreferenzen dieselbe Adresse haben.
Ejemplo:
public class CompareTwoStrings {
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 == to Guru99: " + (stringOne == stringTwo));
String stringThree = "GURU99";
System.out.println("is Guru99 == to GURU99: " + (stringOne == stringThree));
}
}
Erwartete Ausgabe:
is Guru99 == to Guru99: true is Guru99 == to GURU99: false
Erlรคuterung:
- Das erste Ergebnis gibt den booleschen Wert โtrueโ zurรผck. Zeichenfolgen mit demselben Inhalt werden demselben Zeichenfolgenpool hinzugefรผgt, daher teilen sich die Zeichenfolgen eine Adresse.
- Das zweite Ergebnis gibt den booleschen Wert โfalseโ zurรผck. Die Objekte haben unterschiedliche Inhalte, wodurch sich andere String-Pools ergeben. Das bedeutet, dass die Strings separate Objektreferenzen haben; Daher ist die Ausgabe falsch.
Methode 7: Erstellen einer benutzerdefinierten Methode zum Vergleichen zweier Zeichenfolgen in Java
Erstellen Sie eine Methode, die zwei Zeichenfolgen in lexikografischer Reihenfolge vergleicht.
Syntax:
public static int compareTwoStrings(String str1, String str2)
Benutzerdefinierte Methodenparameter
- str1 โ Die zu vergleichende Zeichenfolge.
- str2 โ Die Zeichenfolge, mit der verglichen werden soll.
Benutzerdefinierte Methode gibt zurรผck
- 0 โ Gibt Null zurรผck, wenn die erste Zeichenfolge gleich der zweiten Zeichenfolge ist.
- < 0 โ Gibt eine Zahl kleiner als Null zurรผck, wenn die erste Zeichenfolge kleiner als die zweite Zeichenfolge ist.
- > 0 โ Gibt eine Zahl grรถรer als Null zurรผck, wenn die erste Zeichenfolge grรถรer als die zweite Zeichenfolge ist.
Ejemplo:
public class CompareTwoStrings {
public static int compareTwoStrings(String stringOne, String stringTwo) {
int lengthOfStringOne = stringOne.length();
int lengthOfStringTwo = stringTwo.length();
int minStringLength = Math.min(lengthOfStringOne, lengthOfStringTwo);
for (int i = 0; i < minStringLength; i++) {
char stringOneCharValue = stringOne.charAt(i);
char stringTwoCharValue = stringTwo.charAt(i);
if (stringOneCharValue != stringTwoCharValue) {
return stringOneCharValue - stringTwoCharValue;
}
}
if (lengthOfStringOne != lengthOfStringTwo) {
return lengthOfStringOne - lengthOfStringTwo;
} else {
return 0;
}
}
public static void main(String[] args) {
String stringOne = "Guru99";
String stringTwo = "Guru99";
System.out.println("is Guru99 equal to Guru99: " + compareTwoStrings(stringOne, stringTwo));
}
}
Erwartete Ausgabe:
is Guru99 equal to Guru99: 0
Erlรคuterung:
Das Ergebnis ergab den Wert Null, was bedeutet, dass die benutzerdefinierte Funktion wie erwartet funktioniert.
Zusammenfassung:
Die Java Die zu verwendende Methode zum Vergleichen zweier Zeichenfolgen hรคngt von den folgenden Faktoren ab.
- Wunsch, die Kontrolle รผber Ihre Methode zu haben. Erstellen Sie in diesem Fall eine benutzerdefinierte Methode.
- Sie kรถnnen keinen Legacy-Code verwenden. mit Java 6 und niedriger.
- Die Methode mit optimaler Leistung.
- Die Art der Daten, mit denen Sie arbeiten. Zum Beispiel das Abgleichen einer Zeichenfolge aus einer Reihe variabler Argumente.
- Die von der ausgelagerten Bibliothek bereitgestellten Funktionen. Beispielsweise bietet die StringUtils-Bibliothek verschiedene Methoden zum Vergleichen von Zeichenfolgen.
