Vergleichen Sie zwei Strings in Java
String ist eine Folge von Zeichen. In Java sind Objekte von String unveränderlich, was bedeutet, dass sie konstant sind und nach ihrer Erstellung nicht mehr geändert werden können.
Im Folgenden finden Sie 5 Möglichkeiten, zwei Strings in Java zu vergleichen:
- Benutzerdefinierte Funktion verwenden: Definieren Sie eine Funktion, um Werte mit den folgenden Bedingungen zu vergleichen:
- if (string1 > string2) gibt einen positiven Wert zurück zurück .
- Wenn beide Zeichenfolgen lexikografisch gleich sind,
dh (Zeichenfolge1 == Zeichenfolge2), wird 0 zurückgegeben zurückgegeben . - if (string1 < string2) gibt einen negativen Wert zurück zurück .
Der Wert wird berechnet als (int)str1.charAt(i) – (int)str2.charAt(i)
Beispiele:
Eingabe 1: GeeksforGeeks Eingabe 2: Übung Ausgabe: -9 Eingabe 1: Geeks Eingabe 2: Geeks Ausgabe: 0 Eingabe 1: GeeksforGeeks Eingabe 2: Geeks Ausgabe: 8
Programm:
// Java program to Compare two strings
// lexicographically
public
class
GFG {
// This method compares two strings
// lexicographically without using
// library functions
public
static
int
stringCompare(String str1, String str2)
{
int
l1 = str1.length();
int
l2 = str2.length();
int
lmin = Math.min(l1, l2);
for
(
int
i =
0
; i < lmin; i++) {
int
str1_ch = (
int
)str1.charAt(i);
int
str2_ch = (
int
)str2.charAt(i);
if
(str1_ch != str2_ch) {
return
str1_ch - str2_ch;
}
}
// Edge case for strings like
// String 1="Geeks" and String 2="Geeksforgeeks"
if
(l1 != l2) {
return
l1 - l2;
}
// If none of the above conditions is true,
// it implies both the strings are equal
else
{
return
0
;
}
}
// Driver function to test the above program
public
static
void
main(String args[])
{
String string1 =
new
String(
"Geeksforgeeks"
);
String string2 =
new
String(
"Practice"
);
String string3 =
new
String(
"Geeks"
);
String string4 =
new
String(
"Geeks"
);
// Comparing for String 1 < String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ stringCompare(string1, string2));
// Comparing for String 3 = String 4
System.out.println(
"Comparing "
+ string3 +
" and "
+ string4
+
" : "
+ stringCompare(string3, string4));
// Comparing for String 1 > String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ stringCompare(string1, string4));
}
}
Ausgabe:Vergleich von Geeksforgeeks und Praxis: -9 Vergleich von Geeks und Geeks: 0 Vergleich von Geeksforgeeks und Geeks: 8
- Verwendung von String.equals() : In Java vergleicht die Methode string equals() die beiden gegebenen Strings basierend auf den Daten/dem Inhalt des Strings. Wenn alle Inhalte beider Strings gleich sind, wird true zurückgegeben. Wenn ein Zeichen nicht übereinstimmt, wird false zurückgegeben.
Syntax:
str1.equals(str2);
Hier sind str1 und str2 beide die Strings, die verglichen werden sollen.
Beispiele:
Eingabe 1: GeeksforGeeks Eingabe 2: Übung Ausgabe: falsch Eingabe 1: Geeks Eingabe 2: Geeks Ausgabe: wahr Eingabe 1: Computerfreaks Eingabe 2: Computerfreaks Ausgabe: false
Programm:
// Java program to Compare two strings
// lexicographically
public
class
GFG {
public
static
void
main(String args[])
{
String string1 =
new
String(
"Geeksforgeeks"
);
String string2 =
new
String(
"Practice"
);
String string3 =
new
String(
"Geeks"
);
String string4 =
new
String(
"Geeks"
);
String string5 =
new
String(
"geeks"
);
// Comparing for String 1 != String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ string1.equals(string2));
// Comparing for String 3 = String 4
System.out.println(
"Comparing "
+ string3 +
" and "
+ string4
+
" : "
+ string3.equals(string4));
// Comparing for String 4 != String 5
System.out.println(
"Comparing "
+ string4 +
" and "
+ string5
+
" : "
+ string4.equals(string5));
// Comparing for String 1 != String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ string1.equals(string4));
}
}
Ausgabe:Vergleich von Geeksforgeeks und Practice: falsch Geeks und Geeks vergleichen: wahr Vergleich von Geeks und Geeks: falsch Vergleich von Geeksforgeeks und Geeks: falsch
- Verwenden von String.equalsIgnoreCase() : Die Methode String.equalsIgnoreCase() vergleicht zwei Strings unabhängig von der Groß-/Kleinschreibung (Klein- oder Großschreibung) des Strings. Diese Methode gibt true zurück, wenn das Argument nicht null ist und der Inhalt beider Strings gleich ist, wobei Groß- und Kleinschreibung ignoriert wird, andernfalls false.
Syntax:
str2.equalsIgnoreCase(str1);
Hier sind str1 und str2 beide die Strings, die verglichen werden sollen.
Beispiele:
Eingabe 1: GeeksforGeeks Eingabe 2: Übung Ausgabe: falsch Eingabe 1: Geeks Eingabe 2: Geeks Ausgabe: wahr Eingabe 1: Computerfreaks Eingabe 2: Computerfreaks Ausgabe: wahr
Programm:
// Java program to Compare two strings
// lexicographically
public
class
GFG {
public
static
void
main(String args[])
{
String string1 =
new
String(
"Geeksforgeeks"
);
String string2 =
new
String(
"Practice"
);
String string3 =
new
String(
"Geeks"
);
String string4 =
new
String(
"Geeks"
);
String string5 =
new
String(
"geeks"
);
// Comparing for String 1 != String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ string1.equalsIgnoreCase(string2));
// Comparing for String 3 = String 4
System.out.println(
"Comparing "
+ string3 +
" and "
+ string4
+
" : "
+ string3.equalsIgnoreCase(string4));
// Comparing for String 4 = String 5
System.out.println(
"Comparing "
+ string4 +
" and "
+ string5
+
" : "
+ string4.equalsIgnoreCase(string5));
// Comparing for String 1 != String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ string1.equalsIgnoreCase(string4));
}
}
Ausgabe:Vergleich von Geeksforgeeks und Practice: falsch Geeks und Geeks vergleichen: wahr Geeks und Geeks vergleichen: wahr Vergleich von Geeksforgeeks und Geeks: falsch
- Verwenden von Objects.equals() : Die Methode Object.equals(Object a, Object b) gibt true zurück, wenn die Argumente gleich sind, andernfalls false. Wenn also beide Argumente null sind, wird true zurückgegeben, und wenn genau ein Argument null ist, wird false zurückgegeben. Andernfalls wird die Gleichheit mithilfe der Methode equals() des ersten Arguments bestimmt.
Syntax:
public static boolean equals (Objekt a, Objekt b)
Hier sind a und b beide die zu vergleichenden String-Objekte.
Beispiele:
Eingabe 1: GeeksforGeeks Eingabe 2: Übung Ausgabe: falsch Eingabe 1: Geeks Eingabe 2: Geeks Ausgabe: wahr Eingang 1: null Eingang 2: null Ausgang: wahr
Programm:
// Java program to Compare two strings
// lexicographically
import
java.util.*;
public
class
GFG {
public
static
void
main(String args[])
{
String string1 =
new
String(
"Geeksforgeeks"
);
String string2 =
new
String(
"Geeks"
);
String string3 =
new
String(
"Geeks"
);
String string4 =
null
;
String string5 =
null
;
// Comparing for String 1 != String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ Objects.equals(string1, string2));
// Comparing for String 2 = String 3
System.out.println(
"Comparing "
+ string2 +
" and "
+ string3
+
" : "
+ Objects.equals(string2, string3));
// Comparing for String 1 != String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ Objects.equals(string1, string4));
// Comparing for String 4 = String 5
System.out.println(
"Comparing "
+ string4 +
" and "
+ string5
+
" : "
+ Objects.equals(string4, string5));
}
}
Ausgabe:Vergleich von Geeksforgeeks und Geeks: falsch Geeks und Geeks vergleichen: wahr Vergleich von Geeksforgeeks und null : false Vergleich von null und null : wahr
- Verwenden von String.compareTo() :
Syntax:
int str1.compareTo(String str2)
Funktioniert :
Es vergleicht und gibt die folgenden Werte wie folgt zurück:- if (string1 > string2) gibt einen positiven Wert zurück .
- Wenn beide Zeichenfolgen lexikografisch gleich sind,
dh (Zeichenfolge1 == Zeichenfolge2), wird 0 zurückgegeben . - if (string1 < string2) gibt einen negativen Wert zurück .
Beispiele:
Eingabe 1: GeeksforGeeks Eingabe 2: Übung Ausgabe: -9 Eingabe 1: Geeks Eingabe 2: Geeks Ausgabe: 0 Eingabe 1: GeeksforGeeks Eingabe 2: Geeks Ausgabe: 8
Programm:
// Java program to Compare two strings
// lexicographically
import
java.util.*;
public
class
GFG {
public
static
void
main(String args[])
{
String string1 =
new
String(
"Geeksforgeeks"
);
String string2 =
new
String(
"Practice"
);
String string3 =
new
String(
"Geeks"
);
String string4 =
new
String(
"Geeks"
);
// Comparing for String 1 < String 2
System.out.println(
"Comparing "
+ string1 +
" and "
+ string2
+
" : "
+ string1.compareTo(string2));
// Comparing for String 3 = String 4
System.out.println(
"Comparing "
+ string3 +
" and "
+ string4
+
" : "
+ string3.compareTo(string4));
// Comparing for String 1 > String 4
System.out.println(
"Comparing "
+ string1 +
" and "
+ string4
+
" : "
+ string1.compareTo(string4));
}
}
Ausgabe:Vergleich von Geeksforgeeks und Praxis: -9 Vergleich von Geeks und Geeks: 0 Vergleich von Geeksforgeeks und Geeks: 8
Warum nicht == für den Vergleich von Strings verwenden?
Im Allgemeinen werden die Operatoren equal() und „ == “ in Java verwendet, um Objekte zu vergleichen, um die Gleichheit zu überprüfen, aber hier sind einige der Unterschiede zwischen den beiden:
- Der Hauptunterschied zwischen der Methode .equals() und dem Operator == besteht darin, dass die eine Methode und die andere der Operator ist.
- Man kann ==-Operatoren für den Referenzvergleich (Adressvergleich) und die .equals()-Methode für den Inhaltsvergleich verwenden .
In einfachen Worten, == prüft, ob beide Objekte auf denselben Speicherort zeigen, während .equals() den Vergleich von Werten in den Objekten auswertet.
Beispiel:
// Java program to understand
// why to avoid == operator
public
class
Test {
public
static
void
main(String[] args)
{
String s1 =
new
String(
"HELLO"
);
String s2 =
new
String(
"HELLO"
);
System.out.println(s1 == s2);
System.out.println(s1.equals(s2));
}
}
Ausgabe:falsch wahr
Erläuterung: Hier werden zwei String-Objekte erstellt, nämlich s1 und s2.
- Sowohl s1 als auch s2 beziehen sich auf unterschiedliche Objekte.
- Wenn man den Operator == für den Vergleich von s1 und s2 verwendet, ist das Ergebnis falsch, da beide unterschiedliche Adressen im Speicher haben.
- Bei Verwendung von equals ist das Ergebnis wahr, da es nur die in s1 und s2 angegebenen Werte vergleicht.
Achtung Leser! Hören Sie jetzt nicht auf zu lernen. Holen Sie sich mit dem Kurs Fundamentals of Java and Java Collections zu einem studentenfreundlichen Preis alle wichtigen Java Foundation- und Collections-Konzepte und machen Sie sich bereit für die Industrie. Um Ihre Vorbereitung vom Erlernen einer Sprache auf DS Algo und vieles mehr abzuschließen, lesen Sie bitte Vollständiger Vorbereitungskurs für ein Vorstellungsgespräch .