Strings in Java sind Objekte, die intern nur von einem Array unterstützt werden, was eine zusammenhängende Zuweisung von Speicher für Zeichen bedeutet. Bitte beachten Sie, dass Strings in Java unveränderlich sind, was bedeutet, dass wir den Inhalt nicht mehr ändern können, sobald wir ein String-Objekt erstellt und ihm einige Werte zugewiesen haben. Wir können jedoch ein weiteres String-Objekt mit den gewünschten Änderungen erstellen.
Die String-Klasse von Java umfasst viele Methoden zum Ausführen verschiedener Operationen an Strings und wir werden uns auf den Java-String konzentrieren vergleichen mit() Methode in diesem Artikel.
Java String.compareTo()-Methode
Das Java vergleichen mit() Die Methode vergleicht die angegebene Zeichenfolge mit der aktuellen Zeichenfolge lexikografisch . Es gibt eine positive Zahl, eine negative Zahl oder 0 zurück. Es vergleicht Zeichenfolgen basierend auf Unicode-Wert jedes Zeichens in den Zeichenfolgen.
Beispiel:
Java
public> class> StringCompareTo {> > public> static> void> main(String[] args) {> > String str1 => 'Geeks'> ;> > String str2 => 'Geeks'> ;> > int> comparison = str1.compareTo(str2);> > if> (comparison <> 0> ) {> > System.out.println(str1 +> ' comes before '> + str2 +> ' lexicographically.'> );> > }> else> if> (comparison>> 0> ) {> > System.out.println(str1 +> ' comes after '> + str2 +> ' lexicographically.'> );> > }> else> {> > System.out.println(str1 +> ' and '> + str2 +> ' are lexicographically equal.'> );> > }> > }> }> |
>
>
Ausgabe:
Geeks and Geeks are lexicographically equal.>
Syntax
int comparison = str1.compareTo(str2);>
Parameter:
- str1: String 1 zum Vergleich
- str2: String 2 zum Vergleich
Kehrt zurück:
- Wenn string1> string2 , es kehrt zurück positiv Nummer
- Wenn string1
- Wenn string1 == string2 , es kehrt zurück 0
Ausnahme: Es werden die folgenden zwei Ausnahmen ausgelöst:
- NullPointerException- wenn das angegebene Objekt Null ist.
- ClassCastException- wenn das aktuelle Objekt nicht mit dem angegebenen Objekt verglichen werden kann.
Varianten der CompareTo()-Methode
Es gibt drei Varianten des vergleichen mit() Methode, die wie folgt lautet:
- mit int CompareTo(Object obj)
- mit int vergleichenTo(String AnotherString)
- mit int vergleichenToIgnoreCase(String str)
1. int CompareTo(Object obj)
Diese Methode vergleicht diesen String mit einem anderen Objekt.
Syntax:
int compareTo(Object obj)>
Parameter:
obj: the Object to be compared.>
Rückgabewert: Der Wert 0, wenn das Argument eine Zeichenfolge ist, die lexikographisch dieser Zeichenfolge entspricht; ein Wert kleiner als 0, wenn das Argument eine Zeichenfolge ist, die lexikografisch größer als diese Zeichenfolge ist; und ein Wert größer als 0, wenn das Argument eine Zeichenfolge ist, die lexikografisch kleiner als diese Zeichenfolge ist.
Beispiel:
Unten ist die Implementierung von int CompareTo(Object obj):
Sortieren einer Arrayliste Java
Java
// Java code to demonstrate the> // working of compareTo()> public> class> Cmp1 {> > public> static> void> main(String args[])> > {> > // Initializing Strings> > String str1 => 'geeksforgeeks'> ;> > String str2 => new> String(> 'geeksforgeeks'> );> > String str3 => new> String(> 'astha'> );> > // Checking if geeksforgeeks string> > // equates to geeksforgeeks object> > System.out.print(> > 'Difference of geeksforgeeks(obj) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str2));> > // Checking if geeksforgeeks string> > // equates to astha object> > System.out.print(> > 'Difference of astha(obj) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str3));> > }> }> |
>
>Ausgabe
Difference of geeksforgeeks(obj) and geeksforgeeks(str) : 0 Difference of astha(obj) and geeksforgeeks(str) : 6>
2. int vergleichenTo(String anotherString)
Diese Methode vergleicht zwei Zeichenfolgen lexikografisch.
Syntax:
int compareTo(String anotherString)>
Parameter:
anotherString: the String to be compared.>
Rückgabewert: Der Wert 0, wenn das Argument eine Zeichenfolge ist, die lexikographisch dieser Zeichenfolge entspricht; ein Wert kleiner als 0, wenn das Argument eine Zeichenfolge ist, die lexikografisch größer als diese Zeichenfolge ist; und ein Wert größer als 0, wenn das Argument eine Zeichenfolge ist, die lexikografisch kleiner als diese Zeichenfolge ist.
Beispiel:
Unten ist die Implementierung von int CompareTo(String anotherString):
Java
// Java code to demonstrate the> // working of compareTo()> public> class> Cmp2 {> > public> static> void> main(String args[])> > {> > // Initializing Strings> > String str1 => 'geeksforgeeks'> ;> > String str2 => 'geeksforgeeks'> ;> > String str3 => 'astha'> ;> > // Checking if geeksforgeeks string> > // equates to geeksforgeeks string> > System.out.print(> > 'Difference of geeksforgeeks(str) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str2));> > // Checking if geeksforgeeks string> > // equates to astha string> > System.out.print(> > 'Difference of astha(str) and geeksforgeeks(str) : '> );> > System.out.println(str1.compareTo(str3));> > }> }> |
>
>Ausgabe
Difference of geeksforgeeks(str) and geeksforgeeks(str) : 0 Difference of astha(str) and geeksforgeeks(str) : 6>
3. int CompareToIgnoreCase(String str)
Diese Methode vergleicht zwei Zeichenfolgen lexikografisch und ignoriert dabei Groß- und Kleinschreibung.
Syntax:
int compareToIgnoreCase(String str)>
Parameter:
str: the String to be compared.>
Rückgabewert: Diese Methode gibt eine negative Ganzzahl, Null oder eine positive Ganzzahl zurück, wenn der angegebene String größer, gleich oder kleiner als dieser String ist, wobei Groß- und Kleinschreibung ignoriert wird.
Beispiel:
Unten ist die Implementierung von int CompareToIgnoreCase(String str):
Java
// Java code to demonstrate the> // working of compareToIgnoreCase()> public> class> Cmp3 {> > public> static> void> main(String args[])> > {> > // Initializing Strings> > String str1 => 'geeks'> ;> > String str2 => 'gEEkS'> ;> > // Checking if geeksforgeeks string> > // equates to geeksforgeeks string> > // case sensitive> > System.out.print(> > 'Difference of geeks and gEEkS (case sensitive) : '> );> > System.out.println(str1.compareTo(str2));> > // Checking if geeksforgeeks string> > // equates to astha string> > // case insensitive> > // using compareToIgnoreCase()> > System.out.print(> > 'Difference of geeks and gEEkS (case insensitive) : '> );> > System.out.println(str1.compareToIgnoreCase(str2));> > }> }> |
>
Sortieren Sie die Arrayliste in Java
>Ausgabe
Difference of geeks and gEEkS (case sensitive) : 32 Difference of geeks and gEEkS (case insensitive) : 0>
Ausnahmen in der Java-String-compareTo()-Methode
Die Methode CompareTo() in Java kann zwei mögliche Ausnahmen auslösen:
- NullPointerException
- ClassCastException
CompareTo() NullPointerException
In Java löst die Methode „compareTo()“ eine NullPointerException aus, wenn eines der verglichenen Objekte vorhanden ist Null . Dadurch wird sichergestellt, dass Sie Nullwerte explizit verarbeiten und unerwartetes Verhalten verhindert wird.
Beispiel:
Java
public> class> cmp5> {> // main method> public> static> void> main(String[] args)> {> > String str => null> ;> > // null is invoking the compareTo method. Hence, the NullPointerException> // will be raised> int> no = str.compareTo(> 'Geeks'> );> > System.out.println(no);> }> }> |
>
>
Ausgabe:
Exception in thread 'main' java.lang.NullPointerException at cmp5.main(cmp5.java:11)>
CompareTo() ClassCastException
Es handelt sich um eine Laufzeitausnahme, die auftritt, wenn zwei Objekte inkompatibler Typen in der Methode „compareTo()“ verglichen werden.
Beispiel:
Java
public> class> ClassCastExceptionExample {> > public> static> void> main(String[] args) {> > Object obj1 => 'Hello'> ;> > Object obj2 => 10> ;> // Integer object> > // Explicitly cast obj2 to String to force the exception> > int> comparison = ((String) obj2).compareTo(obj1);> > System.out.println(> 'Comparison: '> + comparison);> > }> }> |
>
Voreingenommenheit und Varianz
>
Ausgabe:
./ClassCastExceptionExample.java:8: error: incompatible types: Object cannot be converted to String int comparison = ((String) obj2).compareTo(obj1); // ClassCastException occurs here>
Lesen Sie auch:
- Vergleichen Sie zwei Strings in Java
- Vergleichen Sie zwei Zeichenfolgen lexikografisch in Java
- Java-Integer-compareTo()-Methode
Abschluss
Die Funktion „compareTo()“ in Java wird verwendet, um zwei Zeichenfolgen oder Objekte lexikographisch zu vergleichen. Es gibt eine positive, null oder negative ganze Zahl zurück. In diesem Tutorial haben wir diese Methode behandelt und ihre Funktionsweise und Ausnahmen besprochen.
Mehr lesen Java-String-Methoden
Java String CompareTo()-Methode – FAQs
Wie vergleiche ich Strings in Java?
Sie können Zeichenfolgen in Java mit der Methode „compareTo()“ vergleichen. Es akzeptiert zwei Parameter und vergleicht sie lexikografisch.
Was ist der Unterschied zwischen der Methode „compareTo()“ und der Methode „equals()“ in Java?
equal()-Methode CompareTo()-Methode Wird verwendet, um zu überprüfen, ob zwei Objekte genau gleich sind. Wird verwendet, um zwei Objekte zu vergleichen und ihre relative Reihenfolge zu bestimmen. Gibt einen booleschen Wert zurück:
- wahr, wenn die Objekte als gleich betrachtet werden.
- sonst falsch.
Gibt eine Ganzzahl zurück:
- Negativer Wert, wenn das erste Objekt als kleiner als das zweite betrachtet wird.
- Null, wenn die Objekte als gleich betrachtet werden.
- Positiver Wert, wenn das erste Objekt als größer als das zweite angesehen wird.
Was gibt „compareTo()“ in Java zurück?
Die Methode „compareTo()“ in Java gibt eine Ganzzahl zurück. Es kann drei mögliche Werte haben:
- Negativer Wert: Wenn das erste Objekt als kleiner betrachtet wird als das zweite.
- Null: Wenn die Objekte als gleich betrachtet werden.
- Positiver Wert: Wenn das erste Objekt als größer angesehen wird als das zweite.