Șirurile de caractere în Java sunt obiecte care sunt acceptate intern doar de o matrice, ceea ce înseamnă alocarea contiguă de memorie pentru caractere. Vă rugăm să rețineți că șirurile sunt imuabile în Java, ceea ce înseamnă că odată ce creăm un obiect String și îi atribuim niște valori, nu putem schimba conținutul. Cu toate acestea, putem crea un alt obiect String cu modificările pe care le dorim.
Clasa String din Java cuprinde o mulțime de metode pentru a executa diverse operații pe șiruri de caractere și ne vom concentra pe șirul Java. compara cu() metoda din acest articol.
Metoda Java String.compareTo().
Java compara cu() metoda compară șirul dat cu șirul curent din punct de vedere lexicografic . Returnează un număr pozitiv, un număr negativ sau 0. Compară șiruri de caractere pe baza Valoare Unicode a fiecărui caracter din șiruri.
Exemplu:
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>>>> > System.out.println(str1 +> ' comes after '> + str2 +> ' lexicographically.'> );> > }> else> {> > System.out.println(str1 +> ' and '> + str2 +> ' are lexicographically equal.'> );> > }> > }> }> |
>
>
Ieșire:
Geeks and Geeks are lexicographically equal.>
Sintaxă
int comparison = str1.compareTo(str2);>
Parametri:
- str1: Șirul 1 pentru comparație
- str2: Șirul 2 pentru comparație
Se intoarce:
- dacă șir1> șir2 , se întoarce pozitiv număr
- dacă șir 1
- dacă șir1 == șir2 , se întoarce 0
Excepție: Se aruncă următoarele două excepții:
- NullPointerException- dacă obiectul specificat este Null.
- ClassCastException- dacă obiectul curent nu poate fi comparat cu obiectul specificat.
Variante ale metodei CompareTo().
Sunt trei variante al compara cu() metoda care sunt dupa cum urmeaza:
- folosind int compareTo(Object obj)
- folosind int compareTo(String AnotherString)
- folosind int compareToIgnoreCase(String str)
1. int compareTo(Obiect obiect)
Această metodă compară acest șir cu un alt obiect.
Sintaxă:
int compareTo(Object obj)>
Parametri:
obj: the Object to be compared.>
Valoare returnată: Valoarea 0 dacă argumentul este un șir egal lexicografic cu acest șir; o valoare mai mică decât 0 dacă argumentul este un șir lexicografic mai mare decât acest șir; și o valoare mai mare decât 0 dacă argumentul este un șir lexicografic mai mic decât acest șir.
Exemplu:
Mai jos este implementarea int compareTo(Object obj):
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));> > }> }> |
>
>Ieșire
Difference of geeksforgeeks(obj) and geeksforgeeks(str) : 0 Difference of astha(obj) and geeksforgeeks(str) : 6>
2. int compareTo(String anotherString)
Această metodă compară două șiruri lexicografic.
Sintaxă:
int compareTo(String anotherString)>
Parametri:
anotherString: the String to be compared.>
Valoare returnată: Valoarea 0 dacă argumentul este un șir egal lexicografic cu acest șir; o valoare mai mică decât 0 dacă argumentul este un șir lexicografic mai mare decât acest șir; și o valoare mai mare decât 0 dacă argumentul este un șir lexicografic mai mic decât acest șir.
Exemplu:
Mai jos este implementarea lui int compareTo(String anotherString):
Java
string.format java string
// 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));> > }> }> |
>
>Ieșire
Difference of geeksforgeeks(str) and geeksforgeeks(str) : 0 Difference of astha(str) and geeksforgeeks(str) : 6>
3. int compareToIgnoreCase(String str)
Această metodă compară două șiruri lexicografic, ignorând diferențele de majuscule.
Sintaxă:
int compareToIgnoreCase(String str)>
Parametri:
str: the String to be compared.>
Valoare returnată: Această metodă returnează un număr întreg negativ, zero sau un număr întreg pozitiv, deoarece șirul specificat este mai mare, egal cu sau mai mic decât acest șir, ignorând considerentele de caz.
Exemplu:
Mai jos este implementarea lui 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));> > }> }> |
>
>Ieșire
Difference of geeks and gEEkS (case sensitive) : 32 Difference of geeks and gEEkS (case insensitive) : 0>
Excepții în metoda Java String compareTo().
Metoda compareTo() din Java poate ridica două posibile excepții:
- NullPointerException
- ClassCastException
compareTo() NullPointerException
În Java, metoda compareTo() aruncă o excepție NullPointerException dacă oricare dintre obiectele comparate este nul . Acest lucru vă asigură că gestionați în mod explicit valorile nule și previne comportamentul neașteptat.
Exemplu:
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);> }> }> |
>
>
Ieșire:
Exception in thread 'main' java.lang.NullPointerException at cmp5.main(cmp5.java:11)>
compareTo() ClassCastException
Este o excepție de rulare și apare atunci când două obiecte de tipuri incompatibile sunt comparate în metoda compareTo().
Exemplu:
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);> > }> }> |
>
>
Ieșire:
./ClassCastExceptionExample.java:8: error: incompatible types: Object cannot be converted to String int comparison = ((String) obj2).compareTo(obj1); // ClassCastException occurs here>
Citește și:
- Comparați două șiruri de caractere în Java
- Comparați două șiruri lexicografic în Java
- Metoda Java Integer compareTo().
Concluzie
Funcția compareTo() în Java este folosită pentru a compara două șiruri de caractere sau obiecte lexicografic. Returnează un număr întreg pozitiv, zero sau negativ. În acest tutorial, am acoperit această metodă și am discutat despre funcționarea și excepțiile acesteia.
Citeşte mai mult Metode de șiruri Java
Metoda Java String CompareTo() - Întrebări frecvente
Cum se compară șirurile în Java?
Puteți compara șiruri în Java folosind metoda compareTo(). Acceptă doi parametri și îi compară lexicografic.
Care este diferența dintre metoda compareTo() și metoda equals() în Java?
metoda equals(). metoda compareTo(). Folosit pentru a verifica dacă două obiecte sunt exact la fel. Folosit pentru a compara două obiecte și pentru a determina ordinea relativă a acestora. Returnează un boolean:
- adevărat dacă obiectele sunt considerate egale.
- fals altfel.
Returnează un număr întreg:
- Valoare negativă dacă primul obiect este considerat mai mic decât al doilea.
- Zero dacă obiectele sunt considerate egale.
- Valoare pozitivă dacă primul obiect este considerat mai mare decât al doilea.
Ce returnează compareTo () în Java?
metoda compareTo() din Java returnează un număr întreg. Poate avea trei valori posibile:
- Valoare negativă: Când primul obiect este considerat mai mic decât al doilea.
- Zero: Când obiectele sunt considerate egale.
- Valoare pozitiva: Când primul obiect este considerat mai mare decât al doilea.