Metoda Java String CompareTo() z przykładami

Łańcuchy w Javie to obiekty obsługiwane wewnętrznie tylko przez tablicę, co oznacza ciągłą alokację pamięci na znaki. Należy pamiętać, że w Javie ciągi znaków są niezmienne, co oznacza, że ​​gdy utworzymy obiekt String i przypiszemy mu pewne wartości, nie będziemy mogli zmienić ich zawartości. Możemy jednak utworzyć kolejny obiekt String z żądanymi modyfikacjami.

Klasa String w Javie zawiera wiele metod wykonywania różnych operacji na ciągach znaków, a my skupimy się na łańcuchu Java porównać do() metoda w tym artykule.

Metoda Java String.compareTo().

Jawa porównać do() Metoda porównuje podany ciąg z bieżącym ciągiem leksykograficznie . Zwraca liczbę dodatnią, ujemną lub 0. Porównuje ciągi na podstawie Wartość Unicode każdego znaku w ciągu.

Przykład:

Jawa




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.'> );> > }> > }> }>

Wyjście:

Geeks and Geeks are lexicographically equal. 

Składnia

int comparison = str1.compareTo(str2); 

Parametry:

  • str1: Ciąg 1 dla porównania
  • str2: Ciąg 2 dla porównania

Zwroty:

  • Jeśli ciąg1> ciąg2 , powraca pozytywny numer
  • Jeśli ciąg1 , powraca negatywny numer
  • Jeśli ciąg1 == ciąg2 , powraca 0

Wyjątek: Zgłasza następujące dwa wyjątki:

  • Wyjątek NullPointerException — jeśli określony obiekt ma wartość Null.
  • Wyjątek ClassCast- jeśli bieżącego obiektu nie można porównać z określonym obiektem.

Warianty metody CompareTo().

Tam są trzy warianty z porównać do() metodę, która jest następująca:

  1. używając int CompareTo(Object obj)
  2. użycie int CompareTo(String AnotherString)
  3. użycie int CompareToIgnoreCase(String str)

1. int porównajTo(obiekt obiektu)

Ta metoda porównuje ten ciąg z innym obiektem.

Składnia:

int compareTo(Object obj) 

Parametry:

  obj:   the Object to be compared. 

Wartość zwracana: Wartość 0, jeśli argument jest ciągiem leksykograficznym równym temu ciągowi; wartość mniejsza niż 0, jeśli argumentem jest ciąg znaków leksykograficznie większy niż ten ciąg; oraz wartość większą niż 0, jeśli argument jest ciągiem leksykograficznym mniejszym niż ten ciąg.

Przykład:

Poniżej znajduje się implementacja int CompareTo(Object obj):

Jawa




// 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));> > }> }>

Wyjście

Difference of geeksforgeeks(obj) and geeksforgeeks(str) : 0 Difference of astha(obj) and geeksforgeeks(str) : 6 

2. int CompareTo(String inny ciąg)

Ta metoda porównuje dwa ciągi znaków pod względem leksykograficznym.

Składnia:

int compareTo(String anotherString) 

Parametry:

  anotherString:    the String to be compared. 

Wartość zwracana: Wartość 0, jeśli argument jest ciągiem leksykograficznym równym temu ciągowi; wartość mniejsza niż 0, jeśli argumentem jest ciąg znaków leksykograficznie większy niż ten ciąg; oraz wartość większą niż 0, jeśli argument jest ciągiem leksykograficznym mniejszym niż ten ciąg.

Przykład:

Poniżej znajduje się implementacja int CompareTo(String anotherString):

Jawa




// 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));> > }> }>

Wyjście

Difference of geeksforgeeks(str) and geeksforgeeks(str) : 0 Difference of astha(str) and geeksforgeeks(str) : 6 

3. int CompareToIgnoreCase(String str)

Ta metoda porównuje dwa ciągi znaków pod względem leksykograficznym, ignorując różnice w wielkości liter.

Składnia:

int compareToIgnoreCase(String str) 

Parametry:

  str:   the String to be compared. 

Wartość zwracana: Ta metoda zwraca ujemną liczbę całkowitą, zero lub dodatnią liczbę całkowitą, jeśli określony ciąg jest większy, równy lub mniejszy od tego ciągu, ignorując wielkość liter.

Przykład:

Poniżej znajduje się implementacja int CompareToIgnoreCase(String str):

Jawa




// 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));> > }> }>

Wyjście

Difference of geeks and gEEkS (case sensitive) : 32 Difference of geeks and gEEkS (case insensitive) : 0 

Wyjątki w metodzie Java String CompareTo().

metoda CompareTo() w Javie może zgłosić dwa możliwe wyjątki:

  • Wyjątek NullPointer
  • Wyjątek ClassCast

CompareTo() Wyjątek NullPointerException

W Javie metoda CompareTo() zgłasza wyjątek NullPointerException, jeśli którykolwiek z porównywanych obiektów jest zero . Zapewnia to jawną obsługę wartości null i zapobiega nieoczekiwanym zachowaniom.

Przykład:

Jawa




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);> }> }>

Wyjście:

  Exception in thread 'main' java.lang.NullPointerException      at cmp5.main(cmp5.java:11) 

CompareTo() Wyjątek ClassCast

Jest to wyjątek czasu wykonywania i występuje, gdy w metodzie CompareTo() porównywane są dwa obiekty niezgodnych typów.

Przykład:

Jawa




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);> > }> }>

Wyjście:

./ClassCastExceptionExample.java:8: error: incompatible types: Object cannot be converted to String int comparison = ((String) obj2).compareTo(obj1); // ClassCastException occurs here 

Przeczytaj także:

  1. Porównaj dwa ciągi w Javie
  2. Porównaj dwa ciągi znaków leksykograficznie w Javie
  3. Metoda Java na liczbach całkowitych CompareTo().

Wniosek

Funkcja CompareTo() w Javie służy do porównywania leksykograficznego dwóch ciągów znaków lub obiektów. Zwraca dodatnią, zerową lub ujemną liczbę całkowitą. W tym samouczku omówiliśmy tę metodę oraz omówiliśmy jej działanie i wyjątki.

Czytaj więcej Metody ciągów Java

Metoda Java String CompareTo() — często zadawane pytania

Jak porównać ciągi w Javie?

Możesz porównywać ciągi znaków w Javie za pomocą metody CompareTo(). Akceptuje dwa parametry i porównuje je leksykograficznie.

Jaka jest różnica między metodą CompareTo() a metodą równości() w Javie?

metoda równa się(). metoda CompareTo().
Służy do sprawdzania, czy dwa obiekty są dokładnie takie same. Służy do porównywania dwóch obiektów i określania ich względnej kolejności.

Zwraca wartość logiczną:

  • true, jeśli obiekty są uważane za równe.
  • inaczej fałszywe.

Zwraca liczbę całkowitą:

  • Wartość ujemna, jeśli pierwszy obiekt jest uważany za mniejszy niż drugi.
  • Zero, jeśli obiekty są uważane za równe.
  • Wartość dodatnia, jeśli pierwszy obiekt jest uważany za większy od drugiego.

Co zwraca funkcja CompareTo () w Javie?

Metoda CompareTo() w Javie zwraca liczbę całkowitą. Może mieć trzy możliwe wartości:

  • Ujemna wartość: Kiedy pierwszy obiekt jest uważany za mniejszy niż drugi.
  • Zero: Kiedy obiekty są uważane za równe.
  • Wartość dodatnia: Kiedy pierwszy obiekt jest uważany za większy niż drugi.