Метод Java String compareTo() із прикладами

Рядки в Java — це об'єкти, які внутрішньо підтримуються лише масивом, що означає безперервний розподіл пам'яті для символів. Зауважте, що рядки незмінні в Java, що означає, що коли ми створюємо об’єкт String і призначаємо йому деякі значення, ми не можемо змінити вміст. Однак ми можемо створити інший об’єкт String із змінами, які нам потрібні.

Клас String у Java містить багато методів для виконання різних операцій над рядками, і ми зосередимося на Java String порівняти() метод у цій статті.

Метод Java String.compareTo().

Ява порівняти() метод порівнює даний рядок із поточним рядком лексикографічно . Він повертає додатне число, від’ємне число або 0. Він порівнює рядки на основі Значення Unicode кожного символу в рядках.

приклад:

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

Вихід:

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().

Є три варіанти з порівняти() метод, який є таким:

  1. використання int compareTo(Object obj)
  2. використання int compareTo(String AnotherString)
  3. використання 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




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 

Читайте також:

  1. Порівняйте два рядки в Java
  2. Порівняйте два рядки лексикографічно в Java
  3. Метод Java Integer compareTo().

Висновок

Функція compareTo() у Java використовується для лексикографічного порівняння двох рядків або об’єктів. Він повертає додатне, нульове або від’ємне ціле число. У цьому посібнику ми розглянули цей метод і обговорили його роботу та винятки.

Детальніше Рядкові методи Java

Метод Java String CompareTo() – поширені запитання

Як порівняти рядки в Java?

Ви можете порівнювати рядки в Java за допомогою методу compareTo(). Він приймає два параметри та порівнює їх лексикографічно.

Яка різниця між методом compareTo() і equals() у Java?

метод equals(). метод compareTo().
Використовується для перевірки того, чи два об’єкти абсолютно однакові. Використовується для порівняння двох об’єктів і визначення їх відносного порядку.

Повертає логічне значення:

  • true, якщо об’єкти вважаються рівними.
  • false інакше.

Повертає ціле число:

  • Від’ємне значення, якщо перший об’єкт вважається меншим за другий.
  • Нуль, якщо об’єкти вважаються рівними.
  • Додатне значення, якщо перший об’єкт вважається більшим за другий.

Що повертає compareTo() у Java?

метод compareTo() у Java повертає ціле число. Він може мати три можливі значення:

  • Від'ємне значення: Коли перший об'єкт вважається меншим за другий.
  • Нуль: Коли об'єкти вважаються рівноправними.
  • Позитивне значення: Коли перший об'єкт вважається більшим за другий.