logo

Porovnejte dva řetězce v Javě

Řetězec je posloupnost znaků. V Javě jsou objekty String neměnné, což znamená, že jsou konstantní a po vytvoření je nelze změnit.

jak zkontrolovat velikost obrazovky

Metody porovnání řetězců v Javě

Níže je 5 způsobů, jak porovnat dva Struny v Javě:



  1. Použití uživatelem definované funkce
  2. Použití String.equals()
  3. Použití String.equalsIgnoreCase()
  4. Použití Objects.equals()
  5. Použití String.compareTo()

1. Použití uživatelem definované funkce:

Definujte funkci pro porovnání hodnot s následujícími podmínkami:

  1. if (řetězec1> řetězec2) vrátí a kladná hodnota .
  2. pokud jsou oba řetězce lexikograficky stejné, tj. (řetězec1 == řetězec2), vrátí 0 .
  3. jestliže (řetězec1 záporná hodnota .

2. Použití String.equals() :

V Javě metoda string equals() porovnává dva dané řetězce na základě dat/obsahu řetězce. Pokud jsou všechny obsahy obou řetězců stejné, vrátí hodnotu true. Pokud některý znak neodpovídá, vrátí hodnotu false.

Syntax:



str1.equals(str2);>

Zde str1 a str2 jsou oba řetězce, které mají být porovnány.

Příklady:

  Input 1:   techcodeview.com   Input 2:   Practice   Output:   false   Input 1:   Geeks   Input 2:   Geeks   Output:   true   Input 1:   geeks   Input 2:   Geeks   Output:   false>

Program:



Jáva
// Java program to Compare two strings // lexicographically public class GFG {  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Practice');  String string3 = new String('Geeks');  String string4 = new String('Geeks');  String string5 = new String('geeks');  // Comparing for String 1 != String 2  System.out.println('Comparing ' + string1 + ' and '  + string2 + ' : '  + string1.equals(string2));  // Comparing for String 3 = String 4  System.out.println('Comparing ' + string3 + ' and '  + string4 + ' : '  + string3.equals(string4));  // Comparing for String 4 != String 5  System.out.println('Comparing ' + string4 + ' and '  + string5 + ' : '  + string4.equals(string5));  // Comparing for String 1 != String 4  System.out.println('Comparing ' + string1 + ' and '  + string4 + ' : '  + string1.equals(string4));  } }>

Výstup
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : false Comparing Geeksforgeeks and Geeks : false>

3. Použití String.equalsIgnoreCase() :

The String.equalsIgnoreCase() metoda porovnává dva řetězce bez ohledu na velikost písmen (dolní nebo horní) řetězce. Tato metoda vrátí hodnotu true, pokud argument není null a obsah obou řetězců je stejný, ignoruje se malá a velká písmena, jinak je false. Syntax:

str2.equalsIgnoreCase(str1);>

Zde str1 a str2 jsou oba řetězce, které mají být porovnány.

Příklady:

  Input 1:   techcodeview.com   Input 2:   Practice   Output:   false   Input 1:   Geeks   Input 2:   Geeks   Output:   true   Input 1:   geeks   Input 2:   Geeks   Output:   true>

Program:

Jáva
// Java program to Compare two strings // lexicographically public class GFG {  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Practice');  String string3 = new String('Geeks');  String string4 = new String('Geeks');  String string5 = new String('geeks');  // Comparing for String 1 != String 2  System.out.println(  'Comparing ' + string1 + ' and ' + string2  + ' : ' + string1.equalsIgnoreCase(string2));  // Comparing for String 3 = String 4  System.out.println(  'Comparing ' + string3 + ' and ' + string4  + ' : ' + string3.equalsIgnoreCase(string4));  // Comparing for String 4 = String 5  System.out.println(  'Comparing ' + string4 + ' and ' + string5  + ' : ' + string4.equalsIgnoreCase(string5));  // Comparing for String 1 != String 4  System.out.println(  'Comparing ' + string1 + ' and ' + string4  + ' : ' + string1.equalsIgnoreCase(string4));  } }>

Výstup
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : true Comparing Geeksforgeeks and Geeks : false>

4. Použití Objects.equals() :

Object.equals(Objekt a, Objekt b) metoda vrací hodnotu true, pokud jsou argumenty navzájem stejné a v opačném případě jsou nepravdivé. Pokud jsou tedy oba argumenty prázdné, je vrácena hodnota true a pokud je právě jeden argument prázdný, je vrácena hodnota false. Jinak je rovnost určena pomocí metody equals() prvního argumentu. Syntax:

public static boolean equals(Object a, Object b)>

Zde a a b jsou oba objekty řetězce, které se mají porovnávat.

Příklady:

  Input 1:   techcodeview.com   Input 2:   Practice   Output:   false   Input 1:   Geeks   Input 2:   Geeks   Output:   true   Input 1:   null   Input 2:   null   Output:   true>

Program:

Jáva
// Java program to Compare two strings // lexicographically import java.util.*; public class GFG {  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Geeks');  String string3 = new String('Geeks');  String string4 = null;  String string5 = null;  // Comparing for String 1 != String 2  System.out.println(  'Comparing ' + string1 + ' and ' + string2  + ' : ' + Objects.equals(string1, string2));  // Comparing for String 2 = String 3  System.out.println(  'Comparing ' + string2 + ' and ' + string3  + ' : ' + Objects.equals(string2, string3));  // Comparing for String 1 != String 4  System.out.println(  'Comparing ' + string1 + ' and ' + string4  + ' : ' + Objects.equals(string1, string4));  // Comparing for String 4 = String 5  System.out.println(  'Comparing ' + string4 + ' and ' + string5  + ' : ' + Objects.equals(string4, string5));  } }>

Výstup
Comparing Geeksforgeeks and Geeks : false Comparing Geeks and Geeks : true Comparing Geeksforgeeks and null : false Comparing null and null : true>

5. Použití String.compareTo() pro porovnání dvou řetězců

Syntaxe String CompareTo()

int str1.compareTo(String str2)>

Pracovní: Porovnává a vrací následující hodnoty takto:

  1. if (řetězec1> řetězec2) vrátí a kladná hodnota .
  2. pokud jsou oba řetězce lexikograficky stejné, tj. (řetězec1 == řetězec2), vrátí 0 .
  3. jestliže (řetězec1 záporná hodnota .

Níže je uvedena implementace výše uvedené metody

Jáva
// Java program to Compare two strings // Using String.compareTo()  import java.util.*; // Diver Class public class GFG {  public static void check(String string1, String string2)  {  if (string1.compareTo(string2)!=0) {  System.out.println(string1 + ' ' + string2  + ' : Not Equal');  }  else {  System.out.println(string1 + ' ' + string2  + ' : Equal');  }  }  // main function  public static void main(String args[])  {  String string1 = new String('Geeksforgeeks');  String string2 = new String('Geeks');  String string3 = new String('Geeks');  String string4 = ' ';  String string5 = ' ';  // Comparing for String 1 != String 2  check(string1, string2);  // Comparing for String 2 = String 3  check(string2, string3);  // Comparing for String 1 != String 4  check(string1, string4);  // Comparing for String 4 = String 5  check(string4, string5);  } }>

Výstup
Geeksforgeeks Geeks : Not Equal Geeks Geeks : Equal Geeksforgeeks : Not Equal : Equal>

Poznámka: Řetězec NULL nelze předat jako argument metodě CompareTo().

Chcete-li se dozvědět více o tématu, přejděte na String.compareTo() článek.

Proč nepoužít == pro porovnání řetězců?

Obecně platí, že obojí rovná se() a == operátory v Javě se používají k porovnání objektů ke kontrole rovnosti, ale zde jsou některé rozdíly mezi těmito dvěma:

  1. Hlavní rozdíl mezi metodou .equals() a operátorem == je ten, že jedna je metoda a druhá je operátor.
  2. Pro porovnání referencí lze použít operátory == (porovnání adres) a metoda .equals() pro srovnání obsahu .
    • S1 i s2 odkazují na různé objekty.
    • Když se pro srovnání s1 a s2 použije operátor ==, pak je výsledek nepravdivý, protože oba mají v paměti různé adresy.
    • Při použití rovnosti je výsledek pravdivý, protože porovnává pouze hodnoty uvedené v s1 a s2.

Chcete-li se dozvědět více o tématu, přejděte na srovnání strun článek.