logo

Jämför två strängar i Java

Strängen är en sekvens av tecken. I Java är objekt av String oföränderliga vilket innebär att de är konstanta och inte kan ändras när de väl har skapats.

ascii av a i java

Metoder för att jämföra strängar i Java

Nedan finns 5 sätt att jämföra två Strängar i Java:

  1. Använder användardefinierad funktion
  2. Använda String.equals()
  3. Använda String.equalsIgnoreCase()
  4. Använda Objects.equals()
  5. Använda String.compareTo()

1. Använda användardefinierad funktion:

Definiera en funktion för att jämföra värden med följande villkor:



  1. if (sträng1> sträng2) returnerar den en positivt värde .
  2. om båda strängarna är lika lexikografiskt, dvs (sträng1 == sträng2) returnerar den 0 .
  3. if (sträng1 negativt värde .

2. Använd String.equals() :

I Java jämför metoden string equals() de två givna strängarna baserat på data/innehåll i strängen. Om allt innehåll i båda strängarna är samma returnerar det sant. Om något tecken inte matchar, returnerar det falskt.

Syntax:

str1.equals(str2);>

Här är str1 och str2 båda strängarna som ska jämföras.

Exempel:

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

Produktion
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : false Comparing Geeksforgeeks and Geeks : false>

3. Använd String.equalsIgnoreCase() :

De String.equalsIgnoreCase() metoden jämför två strängar oavsett fallet (nedre eller övre) på strängen. Den här metoden returnerar true om argumentet inte är null och innehållet i båda strängarna är samma ignorerande skiftläge, annars falskt. Syntax:

str2.equalsIgnoreCase(str1);>

Här är str1 och str2 båda strängarna som ska jämföras.

Exempel:

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

Produktion
Comparing Geeksforgeeks and Practice : false Comparing Geeks and Geeks : true Comparing Geeks and geeks : true Comparing Geeksforgeeks and Geeks : false>

4. Använda Objects.equals() :

Object.equals(Objekt a, Objekt b) metod returnerar sant om argumenten är lika med varandra och falskt annars. Följaktligen, om båda argumenten är null, returneras true och om exakt ett argument är null returneras false. Annars bestäms likheten genom att använda metoden equals() i det första argumentet. Syntax:

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

Här är a och b båda strängobjekten som ska jämföras.

Exempel:

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

Produktion
Comparing Geeksforgeeks and Geeks : false Comparing Geeks and Geeks : true Comparing Geeksforgeeks and null : false Comparing null and null : true>

5. Använd String.compareTo() för att jämföra två strängar

Syntax för String compareTo()

int str1.compareTo(String str2)>

Arbetssätt: Den jämför och returnerar följande värden enligt följande:

  1. if (sträng1> sträng2) returnerar den en positivt värde .
  2. om båda strängarna är lika lexikografiskt, dvs (sträng1 == sträng2) returnerar den 0 .
  3. if (sträng1 negativt värde .

Nedan är implementeringen av ovanstående metod

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

Produktion
Geeksforgeeks Geeks : Not Equal Geeks Geeks : Equal Geeksforgeeks : Not Equal : Equal>

Notera: NULL-strängen kan inte skickas som ett argument för metoden compareTo().

För att veta mer om ämnet se String.compareTo() artikel.

Varför inte använda == för jämförelse av strängar?

I allmänhet båda lika() och == Operatörer i Java används för att jämföra objekt för att kontrollera likhet men här är några av skillnaderna mellan de två:

  1. Den största skillnaden mellan .equals()-metoden och ==-operatorn är att den ena är metoden och den andra är operatorn.
  2. Man kan använda ==-operatorer för referensjämförelse (adressjämförelse) och metoden .equals() för innehållsjämförelse .
    • Både s1 och s2 refererar till olika objekt.
    • När man använder ==-operatorn för s1- och s2-jämförelsen är resultatet falskt eftersom båda har olika adresser i minnet.
    • Om du använder lika är resultatet sant eftersom det bara jämför de värden som ges i s1 och s2.

För att veta mer om ämnet se jämförelse av strängar artikel.