Java String Method CompareTo() s príkladmi

Reťazce v jazyku Java sú objekty, ktoré sú interne podporované iba poľom, čo znamená súvislú alokáciu pamäte pre znaky. Upozorňujeme, že reťazce sú v jazyku Java nemenné, čo znamená, že keď vytvoríme objekt String a priradíme mu nejaké hodnoty, nemôžeme zmeniť obsah. Môžeme však vytvoriť ďalší objekt typu String s úpravami, ktoré chceme.

Trieda String v jazyku Java obsahuje množstvo metód na vykonávanie rôznych operácií s reťazcami a my sa zameriame na reťazec Java porovnať s() metóda v tomto článku.

Metóda Java String.compareTo().

Java porovnať s() metóda porovnáva daný reťazec s aktuálnym reťazcom lexikograficky . Vráti kladné číslo, záporné číslo alebo 0. Porovnáva reťazce na základe Hodnota Unicode každého znaku v reťazcoch.

Príklad:

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

Výkon:

Geeks and Geeks are lexicographically equal. 

Syntax

int comparison = str1.compareTo(str2); 

Parametre:

  • str1: Reťazec 1 na porovnanie
  • str2: Reťazec 2 na porovnanie

Vrátenie:

  • ak reťazec1> reťazec2 , vráti sa pozitívne číslo
  • ak reťazec1 , vráti sa negatívne číslo
  • ak reťazec1 == reťazec2 , vráti sa 0

Výnimka: Vyvoláva nasledujúce dve výnimky:

  • NullPointerException- ak je zadaný objekt Null.
  • ClassCastException- ak aktuálny objekt nemožno porovnať so špecifikovaným objektom.

Varianty metódy CompareTo().

Existujú tri varianty z porovnať s() metódy, ktoré sú nasledovné:

  1. pomocou int CompareTo(Object obj)
  2. pomocou int CompareTo(String AnotherString)
  3. pomocou int CompareToIgnoreCase(String str)

1. int CompareTo(Object obj)

Táto metóda porovnáva tento reťazec s iným objektom.

Syntax:

int compareTo(Object obj) 

Parametre:

  obj:   the Object to be compared. 

Návratová hodnota: Hodnota 0, ak je argument reťazec lexikograficky rovný tomuto reťazcu; hodnotu menšiu ako 0, ak je argumentom reťazec lexikograficky väčší ako tento reťazec; a hodnotu väčšiu ako 0, ak je argumentom reťazec lexikograficky menší ako tento reťazec.

Príklad:

Nižšie je uvedená implementácia 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));> > }> }>

Výkon

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

2. int porovnanie s (reťazec iný reťazec)

Táto metóda lexikograficky porovnáva dva reťazce.

Syntax:

int compareTo(String anotherString) 

Parametre:

  anotherString:    the String to be compared. 

Návratová hodnota: Hodnota 0, ak je argument reťazec lexikograficky rovný tomuto reťazcu; hodnotu menšiu ako 0, ak je argumentom reťazec lexikograficky väčší ako tento reťazec; a hodnotu väčšiu ako 0, ak je argumentom reťazec lexikograficky menší ako tento reťazec.

Príklad:

Nižšie je uvedená implementácia int CompareTo (String otherString):

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

Výkon

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

3. int CompareToIgnoreCase(String str)

Táto metóda lexikograficky porovnáva dva reťazce, pričom ignoruje rozdiely v malých a veľkých písmenách.

Syntax:

int compareToIgnoreCase(String str) 

Parametre:

  str:   the String to be compared. 

Návratová hodnota: Táto metóda vráti záporné celé číslo, nulu alebo kladné celé číslo, pretože zadaný reťazec je väčší, rovný alebo menší ako tento reťazec, pričom sa ignorujú veľké a malé písmená.

Príklad:

Nižšie je implementácia 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));> > }> }>

Výkon

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

Výnimky v metóde Java String CompareTo().

Metóda CompareTo() v jazyku Java môže vyvolať dve možné výnimky:

  • Výnimka NullPointerException
  • ClassCastException

CompareTo() NullPointerException

V jazyku Java metóda CompareTo() vyvoláva výnimku NullPointerException, ak je ním niektorý z porovnávaných objektov nulový . Tým sa zaistí, že budete explicitne spracovávať hodnoty null a zabráni sa neočakávanému správaniu.

Príklad:

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

Výkon:

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

CompareTo() ClassCastException

Je to výnimka za behu a vyskytuje sa, keď sa dva objekty nekompatibilných typov porovnávajú v metóde CompareTo().

Príklad:

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

Výkon:

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

Prečítajte si tiež:

  1. Porovnajte dva reťazce v jazyku Java
  2. Porovnajte dva reťazce lexikograficky v Jave
  3. Metóda Java Integer CompareTo().

Záver

Funkcia CompareTo() v Jave sa používa na lexikografické porovnanie dvoch reťazcov alebo objektov. Vráti kladné, nulové alebo záporné celé číslo. V tomto návode sme sa zaoberali touto metódou a diskutovali o jej fungovaní a výnimkách.

Čítaj viac Java String Methods

Metóda Java String CompareTo() – najčastejšie otázky

Ako porovnať reťazce v Jave?

Reťazce v jazyku Java môžete porovnávať pomocou metódy CompareTo(). Prijíma dva parametre a lexikograficky ich porovnáva.

Aký je rozdiel medzi metódou CompareTo() a metódou equals() v jazyku Java?

metóda equals(). metóda porovnať()
Používa sa na kontrolu, či sú dva objekty úplne rovnaké. Používa sa na porovnanie dvoch objektov a určenie ich relatívneho poradia.

Vráti boolovskú hodnotu:

  • pravda, ak sa objekty považujú za rovnaké.
  • inak falošné.

Vráti celé číslo:

  • Záporná hodnota, ak sa prvý objekt považuje za menší ako druhý.
  • Nula, ak sa objekty považujú za rovnaké.
  • Kladná hodnota, ak sa prvý objekt považuje za väčší ako druhý.

Čo vracia CompareTo () v Jave?

Metóda CompareTo() v jazyku Java vracia celé číslo. Môže mať tri možné hodnoty:

  • Záporná hodnota: Keď je prvý objekt považovaný za menší ako druhý.
  • nula: Keď sa objekty považujú za rovnaké.
  • Pozitívna hodnota: Keď sa prvý objekt považuje za väčší ako druhý.