Which of these method of string class can be used to test two strings for equality?

View Discussion

Improve Article

Save Article

  • Read
  • Discuss
  • View Discussion

    Improve Article

    Save Article

    String is a sequence of characters. In Java, objects of String are immutable which means they are constant and cannot be changed once created.

    Below are 5 ways to compare two Strings in Java:

    1. Using user-defined function : Define a function to compare values with following conditions :
      1. if (string1 > string2) it returns a positive value.
      2. if both the strings are equal lexicographically
        i.e.(string1 == string2) it returns 0.
      3. if (string1 < string2) it returns a negative value.

      The value is calculated as (int)str1.charAt(i) – (int)str2.charAt(i)

      Examples:

      Input 1: GeeksforGeeks Input 2: Practice Output: -9 Input 1: Geeks Input 2: Geeks Output: 0 Input 1: GeeksforGeeks Input 2: Geeks Output: 8

      Program:

      public class GFG {

          public static int stringCompare(String str1, String str2)

          {

              int l1 = str1.length();

              int l2 = str2.length();

              int lmin = Math.min(l1, l2);

              for (int i = 0; i < lmin; i++) {

                  int str1_ch = (int)str1.charAt(i);

                  int str2_ch = (int)str2.charAt(i);

                  if (str1_ch != str2_ch) {

                      return str1_ch - str2_ch;

                  }

              }

              if (l1 != l2) {

                  return l1 - l2;

              }

              else {

                  return 0;

              }

          }

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

              System.out.println("Comparing " + string1 + " and " + string2

                                 + " : " + stringCompare(string1, string2));

              System.out.println("Comparing " + string3 + " and " + string4

                                 + " : " + stringCompare(string3, string4));

              System.out.println("Comparing " + string1 + " and " + string4

                                 + " : " + stringCompare(string1, string4));

          }

      }

      Output:

      Comparing Geeksforgeeks and Practice : -9 Comparing Geeks and Geeks : 0 Comparing Geeksforgeeks and Geeks : 8

    2. Using String.equals() :In Java, string equals() method compares the two given strings based on the data/content of the string. If all the contents of both the strings are same then it returns true. If any character does not match, then it returns false.

      Syntax:

      str1.equals(str2);

      Here str1 and str2 both are the strings which are to be compared.

      Examples:

      Input 1: GeeksforGeeks Input 2: Practice Output: false Input 1: Geeks Input 2: Geeks Output: true Input 1: geeks Input 2: Geeks Output: false

      Program:

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

              System.out.println("Comparing " + string1 + " and " + string2

                                 + " : " + string1.equals(string2));

              System.out.println("Comparing " + string3 + " and " + string4

                                 + " : " + string3.equals(string4));

              System.out.println("Comparing " + string4 + " and " + string5

                                 + " : " + string4.equals(string5));

              System.out.println("Comparing " + string1 + " and " + string4

                                 + " : " + string1.equals(string4));

          }

      }

      Output:

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

    3. Using String.equalsIgnoreCase() : The String.equalsIgnoreCase() method compares two strings irrespective of the case (lower or upper) of the string. This method returns true if the argument is not null and the contents of both the Strings are same ignoring case, else false.

      Syntax:

      str2.equalsIgnoreCase(str1);

      Here str1 and str2 both are the strings which are to be compared.

      Examples:

      Input 1: GeeksforGeeks Input 2: Practice Output: false Input 1: Geeks Input 2: Geeks Output: true Input 1: geeks Input 2: Geeks Output: true

      Program:

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

              System.out.println("Comparing " + string1 + " and " + string2

                                 + " : " + string1.equalsIgnoreCase(string2));

              System.out.println("Comparing " + string3 + " and " + string4

                                 + " : " + string3.equalsIgnoreCase(string4));

              System.out.println("Comparing " + string4 + " and " + string5

                                 + " : " + string4.equalsIgnoreCase(string5));

              System.out.println("Comparing " + string1 + " and " + string4

                                 + " : " + string1.equalsIgnoreCase(string4));

          }

      }

      Output:

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

    4. Using Objects.equals() : Object.equals(Object a, Object b) method returns true if the arguments are equal to each other and false otherwise. Consequently, if both arguments are null, true is returned and if exactly one argument is null, false is returned. Otherwise, equality is determined by using the equals() method of the first argument.

      Syntax:

      public static boolean equals(Object a, Object b)

      Here a and b both are the string objects which are to be compared.

      Examples:

      Input 1: GeeksforGeeks Input 2: Practice Output: false Input 1: Geeks Input 2: Geeks Output: true Input 1: null Input 2: null Output: true

      Program:

      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;

              System.out.println("Comparing " + string1 + " and " + string2

                                 + " : " + Objects.equals(string1, string2));

              System.out.println("Comparing " + string2 + " and " + string3

                                 + " : " + Objects.equals(string2, string3));

              System.out.println("Comparing " + string1 + " and " + string4

                                 + " : " + Objects.equals(string1, string4));

              System.out.println("Comparing " + string4 + " and " + string5

                                 + " : " + Objects.equals(string4, string5));

          }

      }

      Output:

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

    5. Using String.compareTo() :

      Syntax:

      int str1.compareTo(String str2)

      Working:
      It compares and returns the following values as follows:

      1. if (string1 > string2) it returns a positive value.
      2. if both the strings are equal lexicographically
        i.e.(string1 == string2) it returns 0.
      3. if (string1 < string2) it returns a negative value.

      Examples:

      Input 1: GeeksforGeeks Input 2: Practice Output: -9 Input 1: Geeks Input 2: Geeks Output: 0 Input 1: GeeksforGeeks Input 2: Geeks Output: 8

      Program:

      import java.util.*;

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

              System.out.println("Comparing " + string1 + " and " + string2

                                 + " : " + string1.compareTo(string2));

              System.out.println("Comparing " + string3 + " and " + string4

                                 + " : " + string3.compareTo(string4));

              System.out.println("Comparing " + string1 + " and " + string4

                                 + " : " + string1.compareTo(string4));

          }

      }

      Output:

      Comparing Geeksforgeeks and Practice : -9 Comparing Geeks and Geeks : 0 Comparing Geeksforgeeks and Geeks : 8

    Why not to use == for comparison of Strings?

    In general both equals() and “==” operator in Java are used to compare objects to check equality but here are some of the differences between the two:

    • Main difference between .equals() method and == operator is that one is method and other is operator.
    • One can use == operators for reference comparison (address comparison) and .equals() method for content comparison.
    • In simple words, == checks if both objects point to the same memory location whereas .equals() evaluates to the comparison of values in the objects.

      Example:

      public class Test {

          public static void main(String[] args)

          {

              String s1 = new String("HELLO");

              String s2 = new String("HELLO");

              System.out.println(s1 == s2);

              System.out.println(s1.equals(s2));

          }

      }

      Explanation: Here two String objects are being created namely s1 and s2.

      • Both s1 and s2 refers to different objects.
      • When one uses == operator for s1 and s2 comparison then the result is false as both have different addresses in memory.
      • Using equals, the result is true because its only comparing the values given in s1 and s2.

    Which method is used to compare two strings objects for their equality?

    1. String Comparison using the Equality (==) Operator. The equality operator in Java is used to compare two or more objects. If it finds out that both the objects points or refers to the same thing, it returns true, else false.

    Which method is used to compare two strings?

    The compareTo() method compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The method returns 0 if the string is equal to the other string.

    Which of the following string () method are used to compare two strings with each other?

    Explanation: “==” operator used to compare length of two strings and strcmp() is the inbuilt method derived from string class.

    Can we compare two strings using == in Java?

    To compare these strings in Java, we need to use the equals() method of the string. You should not use == (equality operator) to compare these strings because they compare the reference of the string, i.e. whether they are the same object or not.