Рядки в Java — це об'єкти, які внутрішньо підтримуються лише масивом, що означає безперервний розподіл пам'яті для символів. Зауважте, що рядки незмінні в Java, що означає, що коли ми створюємо об’єкт String і призначаємо йому деякі значення, ми не можемо змінити вміст. Однак ми можемо створити інший об’єкт String із змінами, які нам потрібні.
Клас String у Java містить багато методів для виконання різних операцій над рядками, і ми зосередимося на Java String порівняти() метод у цій статті.
Метод Java String.compareTo().
Ява порівняти() метод порівнює даний рядок із поточним рядком лексикографічно . Він повертає додатне число, від’ємне число або 0. Він порівнює рядки на основі Значення Unicode кожного символу в рядках.
приклад:
Java
fcfs
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.'> );> > }> > }> }> |
>
>
Вихід:
Geeks and Geeks are lexicographically equal.>
Синтаксис
int comparison = str1.compareTo(str2);>
Параметри:
- str1: Рядок 1 для порівняння
- str2: Рядок 2 для порівняння
Повернення:
- якщо рядок1> рядок2 , він повертається позитивний номер
- якщо рядок1
- якщо рядок1 == рядок2 , він повертається 0
Виняток: Він створює наступні два винятки:
- NullPointerException- якщо вказаний об’єкт має значення Null.
- ClassCastException- якщо поточний об’єкт не можна порівняти з вказаним об’єктом.
Варіанти методу CompareTo().
Є три варіанти з порівняти() метод, який є таким:
- використання int compareTo(Object obj)
- використання int compareTo(String AnotherString)
- використання int compareToIgnoreCase(String str)
1. int compareTo(Object obj)
Цей метод порівнює цей рядок з іншим об’єктом.
Синтаксис:
int compareTo(Object obj)>
Параметри:
obj: the Object to be compared.>
Повернене значення: Значення 0, якщо аргумент є рядком, лексикографічно рівним цьому рядку; значення менше 0, якщо аргумент є рядком, лексикографічно більшим за цей рядок; і значення більше 0, якщо аргумент є рядком, лексикографічно меншим за цей рядок.
приклад:
Нижче наведено реалізацію 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));> > }> }> |
>
>Вихід
Difference of geeksforgeeks(obj) and geeksforgeeks(str) : 0 Difference of astha(obj) and geeksforgeeks(str) : 6>
2. int compareTo(String anotherString)
Цей метод лексикографічно порівнює два рядки.
Синтаксис:
int compareTo(String anotherString)>
Параметри:
anotherString: the String to be compared.>
Повернене значення: Значення 0, якщо аргумент є рядком, лексикографічно рівним цьому рядку; значення менше 0, якщо аргумент є рядком, лексикографічно більшим за цей рядок; і значення більше 0, якщо аргумент є рядком, лексикографічно меншим за цей рядок.
приклад:
Нижче наведено реалізацію 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));> > }> }> |
>
>Вихід
Difference of geeksforgeeks(str) and geeksforgeeks(str) : 0 Difference of astha(str) and geeksforgeeks(str) : 6>
3. int compareToIgnoreCase(String str)
Цей метод порівнює два рядки лексикографічно, ігноруючи відмінності регістру.
Синтаксис:
int compareToIgnoreCase(String str)>
Параметри:
str: the String to be compared.>
Повернене значення: Цей метод повертає від’ємне ціле число, нуль або позитивне ціле число, оскільки вказаний рядок більше, дорівнює або менше цього рядка, ігноруючи регістр.
приклад:
Нижче наведено реалізацію 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));> > }> }> |
>
>Вихід
Difference of geeks and gEEkS (case sensitive) : 32 Difference of geeks and gEEkS (case insensitive) : 0>
Винятки в методі Java String compareTo().
Метод compareTo() у Java може викликати два можливі винятки:
- NullPointerException
- ClassCastException
compareTo() NullPointerException
У Java метод compareTo() створює виняток NullPointerException, якщо будь-який з порівнюваних об’єктів є нуль . Це гарантує, що ви явно обробляєте нульові значення, і запобігає неочікуваній поведінці.
приклад:
Java
concat рядки 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);> }> }> |
>
>
Вихід:
Exception in thread 'main' java.lang.NullPointerException at cmp5.main(cmp5.java:11)>
compareTo() ClassCastException
Це виняток під час виконання і виникає, коли два об’єкти несумісних типів порівнюються в методі compareTo().
приклад:
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);> > }> }> |
>
>
Вихід:
./ClassCastExceptionExample.java:8: error: incompatible types: Object cannot be converted to String int comparison = ((String) obj2).compareTo(obj1); // ClassCastException occurs here>
Читайте також:
- Порівняйте два рядки в Java
- Порівняйте два рядки лексикографічно в Java
- Метод Java Integer compareTo().
Висновок
Функція compareTo() у Java використовується для лексикографічного порівняння двох рядків або об’єктів. Він повертає додатне, нульове або від’ємне ціле число. У цьому посібнику ми розглянули цей метод і обговорили його роботу та винятки.
Детальніше Рядкові методи Java
Метод Java String CompareTo() – поширені запитання
Як порівняти рядки в Java?
Ви можете порівнювати рядки в Java за допомогою методу compareTo(). Він приймає два параметри та порівнює їх лексикографічно.
Яка різниця між методом compareTo() і equals() у Java?
метод equals(). метод compareTo(). Використовується для перевірки того, чи два об’єкти абсолютно однакові. Використовується для порівняння двох об’єктів і визначення їх відносного порядку. Повертає логічне значення:
- true, якщо об’єкти вважаються рівними.
- false інакше.
Повертає ціле число:
- Від’ємне значення, якщо перший об’єкт вважається меншим за другий.
- Нуль, якщо об’єкти вважаються рівними.
- Додатне значення, якщо перший об’єкт вважається більшим за другий.
Що повертає compareTo() у Java?
метод compareTo() у Java повертає ціле число. Він може мати три можливі значення:
- Від'ємне значення: Коли перший об'єкт вважається меншим за другий.
- Нуль: Коли об'єкти вважаються рівноправними.
- Позитивне значення: Коли перший об'єкт вважається більшим за другий.