Metoda Java String CompareTo() s příklady

Řetězce v Javě jsou objekty, které jsou interně podporovány pouze polem, což znamená souvislou alokaci paměti pro znaky. Upozorňujeme, že řetězce jsou v Javě neměnné, což znamená, že jakmile vytvoříme objekt String a přiřadíme mu nějaké hodnoty, nemůžeme změnit obsah. Můžeme však vytvořit další objekt String s požadovanými úpravami.

Třída String v Javě obsahuje mnoho metod pro provádění různých operací s řetězci a my se zaměříme na Java String porovnat s() metoda v tomto článku.

Metoda Java String.compareTo().

Java porovnat s() metoda porovná daný řetězec s aktuálním řetězcem lexikograficky . Vrací kladné číslo, záporné číslo nebo 0. Porovnává řetězce na základě Hodnota Unicode každého znaku v řetězcích.

Příklad:

Jáva




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ýstup:

Geeks and Geeks are lexicographically equal. 

Syntax

int comparison = str1.compareTo(str2); 

Parametry:

  • str1: Řetězec 1 pro srovnání
  • str2: Řetězec 2 pro srovnání

Vrácení:

  • -li řetězec1> řetězec2 , vrací se pozitivní číslo
  • -li řetězec1 , vrací se negativní číslo
  • -li řetězec1 == řetězec2 , vrací se 0

Výjimka: Vyvolá následující dvě výjimky:

  • NullPointerException- pokud je zadaný objekt Null.
  • ClassCastException- pokud aktuální objekt nelze porovnat se zadaným objektem.

Varianty metody CompareTo().

Existují tři varianty z porovnat s() metody, které jsou následující:

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

1. int CompareTo(Object obj)

Tato metoda porovnává tento řetězec s jiným objektem.

Syntax:

int compareTo(Object obj) 

Parametry:

  obj:   the Object to be compared. 

Návratová hodnota: Hodnota 0, pokud je argumentem řetězec lexikograficky rovný tomuto řetězci; hodnotu menší než 0, pokud je argumentem řetězec lexikograficky větší než tento řetězec; a hodnotu větší než 0, pokud je argumentem řetězec lexikograficky menší než tento řetězec.

Příklad:

Níže je implementace int CompareTo (Object obj):

Jáva




// 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ýstup

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

2. int CompareTo(String otherString)

Tato metoda porovnává dva řetězce lexikograficky.

Syntax:

int compareTo(String anotherString) 

Parametry:

  anotherString:    the String to be compared. 

Návratová hodnota: Hodnota 0, pokud je argumentem řetězec lexikograficky rovný tomuto řetězci; hodnotu menší než 0, pokud je argumentem řetězec lexikograficky větší než tento řetězec; a hodnotu větší než 0, pokud je argumentem řetězec lexikograficky menší než tento řetězec.

Příklad:

Níže je implementace int CompareTo(String otherString):

Jáva




// 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ýstup

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

3. int CompareToIgnoreCase(String str)

Tato metoda porovnává dva řetězce lexikograficky, přičemž ignoruje rozdíly v malých a velkých písmenech.

Syntax:

int compareToIgnoreCase(String str) 

Parametry:

  str:   the String to be compared. 

Návratová hodnota: Tato metoda vrací záporné celé číslo, nulu nebo kladné celé číslo, protože zadaný řetězec je větší, roven nebo menší než tento řetězec, přičemž se neberou ohledy na velká a malá písmena.

Příklad:

Níže je implementace int CompareToIgnoreCase(String str):

Jáva




// 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ýstup

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

Výjimky v metodě Java String CompareTo().

Metoda CompareTo() v Javě může vyvolat dvě možné výjimky:

  • Výjimka NullPointerException
  • ClassCastException

CompareTo() NullPointerException

V Javě metoda CompareTo() vyvolá výjimku NullPointerException, pokud je některý z porovnávaných objektů nula . Tím zajistíte, že budete explicitně zpracovávat hodnoty null, a zabráníte neočekávanému chování.

Příklad:

Jáva




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ýstup:

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

CompareTo() ClassCastException

Je to výjimka za běhu a dochází k ní, když jsou v metodě CompareTo() porovnány dva objekty nekompatibilních typů.

Příklad:

Jáva




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ýstup:

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

Přečtěte si také:

  1. Porovnejte dva řetězce v Javě
  2. Porovnejte dva řetězce lexikograficky v Javě
  3. Metoda Java Integer CompareTo().

Závěr

Funkce CompareTo() v Javě se používá k lexikografickému porovnání dvou řetězců nebo objektů. Vrací kladné, nulové nebo záporné celé číslo. V tomto tutoriálu jsme tuto metodu probrali a probrali její fungování a výjimky.

Přečtěte si více Java String Methods

Metoda Java String CompareTo() – nejčastější dotazy

Jak porovnat řetězce v Javě?

Řetězce v Javě můžete porovnávat pomocí metody CompareTo(). Přijímá dva parametry a lexikograficky je porovnává.

Jaký je rozdíl mezi metodou CompareTo() a metodou equals() v Javě?

metoda equals(). metoda CompareTo().
Používá se ke kontrole, zda jsou dva objekty přesně stejné. Slouží k porovnání dvou objektů a určení jejich vzájemného pořadí.

Vrátí boolean:

  • true, pokud jsou objekty považovány za stejné.
  • jinak nepravda.

Vrátí celé číslo:

  • Záporná hodnota, pokud je první objekt považován za menší než druhý.
  • Nula, pokud jsou objekty považovány za stejné.
  • Kladná hodnota, pokud je první objekt považován za větší než druhý.

Co vrací CompareTo () v Javě?

Metoda CompareTo() v Javě vrací celé číslo. Může mít tři možné hodnoty:

  • Záporná hodnota: Když je první objekt považován za menší než druhý.
  • Nula: Když jsou objekty považovány za rovnocenné.
  • Kladná hodnota: Když je první objekt považován za větší než druhý.