logo

Porovnajte dva reťazce v jazyku Java

Reťazec je postupnosť znakov. V Jave sú objekty String nemenné, čo znamená, že sú konštantné a po vytvorení ich nemožno zmeniť.

html zoznam

Metódy porovnávania reťazcov v Jave

Nižšie je uvedených 5 spôsobov, ako porovnať dva Struny v jazyku Java:

  1. Používanie funkcie definovanej používateľom
  2. Použitie String.equals()
  3. Použitie String.equalsIgnoreCase()
  4. Použitie Objects.equals()
  5. Použitie String.compareTo()

1. Použitie funkcie definovanej používateľom:

Definujte funkciu na porovnanie hodnôt s nasledujúcimi podmienkami:



  1. ak (reťazec1> reťazec2) vráti a kladná hodnota .
  2. ak sú oba reťazce lexikograficky rovnaké, tj (reťazec1 == reťazec2), vráti 0 .
  3. ak (reťazec1 záporná hodnota .

2. Použitie String.equals() :

V jazyku Java metóda string equals() porovnáva dva dané reťazce na základe údajov/obsahu reťazca. Ak je všetok obsah oboch reťazcov rovnaký, vráti hodnotu true. Ak sa niektorý znak nezhoduje, vráti hodnotu false.

Syntax:

str1.equals(str2);>

Tu sú reťazce str1 a str2, ktoré sa majú porovnávať.

Prí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:

Java
// 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ýkon
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : false Comparing Geeksforgeeks and Geeks : false>

3. Použitie String.equalsIgnoreCase() :

The String.equalsIgnoreCase() metóda porovnáva dva reťazce bez ohľadu na veľkosť písmen (dolné alebo horné) reťazca. Táto metóda vráti hodnotu true, ak argument nie je nulový a obsah oboch reťazcov je rovnaký, pričom sa ignorujú malé a veľké písmená, inak je hodnota false. Syntax:

str2.equalsIgnoreCase(str1);>

Tu str1 a str2 sú reťazce, ktoré sa majú porovnávať.

Prí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:

Java
// 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ýkon
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : true Comparing Geeksforgeeks and Geeks : false>

4. Použitie Objects.equals() :

Object.equals(Object a, Object b) metóda vráti hodnotu true, ak sú argumenty navzájom rovnaké a inak sú nepravdivé. V dôsledku toho, ak sú oba argumenty nulové, vráti sa true a ak je práve jeden argument nulový, vráti sa false. V opačnom prípade sa rovnosť určí pomocou metódy equals() prvého argumentu. Syntax:

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

Tu sú a aj b reťazcové objekty, ktoré sa majú porovnávať.

Prí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:

Java
// 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ýkon
Comparing Geeksforgeeks and Geeks : false Comparing Geeks and Geeks : true Comparing Geeksforgeeks and null : false Comparing null and null : true>

5. Použitie String.compareTo() na porovnanie dvoch reťazcov

Syntax String CompareTo()

int str1.compareTo(String str2)>

pracuje: Porovnáva a vracia nasledujúce hodnoty nasledovne:

  1. ak (reťazec1> reťazec2) vráti a kladná hodnota .
  2. ak sú oba reťazce lexikograficky rovnaké, tj (reťazec1 == reťazec2), vráti 0 .
  3. ak (reťazec1 záporná hodnota .

Nižšie je uvedená implementácia vyššie uvedenej metódy

Java
// 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ýkon
Geeksforgeeks Geeks : Not Equal Geeks Geeks : Equal Geeksforgeeks : Not Equal : Equal>

Poznámka: Reťazec NULL nemožno odovzdať ako argument metóde CompareTo().

Ak sa chcete dozvedieť viac o téme, pozrite si String.compareTo() článok.

Prečo nepoužiť == na porovnanie reťazcov?

Vo všeobecnosti oboje rovná sa() a == operátori v jazyku Java sa používajú na porovnávanie objektov na kontrolu rovnosti, ale tu sú niektoré z rozdielov medzi nimi:

  1. Hlavný rozdiel medzi metódou .equals() a operátorom == je v tom, že jedna je metóda a druhá je operátor.
  2. Na porovnanie referencií možno použiť operátory == (porovnanie adries) a metóda .equals() pre porovnanie obsahu .
    • S1 aj s2 odkazujú na rôzne objekty.
    • Keď sa na porovnanie s1 a s2 použije operátor ==, výsledok je nepravdivý, pretože oba majú v pamäti rôzne adresy.
    • Pri použití rovnosti je výsledok pravdivý, pretože porovnáva iba hodnoty uvedené v s1 a s2.

Ak sa chcete dozvedieť viac o téme, pozrite si porovnanie strún článok.