Ł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:
- używając int CompareTo(Object obj)
- użycie int CompareTo(String AnotherString)
- 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:
- Porównaj dwa ciągi w Javie
- Porównaj dwa ciągi znaków leksykograficznie w Javie
- 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ą:
błąd wykonania
- 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.