Best way to compare string in java

2) regionMatches()

The regionMatches() method is used to compare a specific region in one string with a specific region in another string. Java also offers an overloaded form that helps us to compare strings while ignoring their case differences.

"Hello World".regionMatches(6, "world", 0, 4)       //false
"Hello World".regionMatches(true, 6, "world", 0, 4) //true

3) startsWith() and endsWith()

The startsWith() method helps us check whether a given string begins with a specific substring, whereas; endsWith() is used to check whether a given string ends with the specific substring given. This can also be referred to as a specialized form of regionMatches().

This method is case sensitive.

"Hello".startsWith("He") //true
"Hello".endsWith("lo")  //true

4) equals() vs. ==

We often get confused while using equals() and ==, but they are used to perform two different operations.

The equals() method is used to compare the characters inside a string object; whereas, the == operator is used to compare two object references to see whether they refer to the same instance.

String str1 = "Hello";
String str2 = new String(str1);
String str3 = "Hello";
str1.equals(str2)   //true
str1 == str2       //false
str1 == str3       //true

5) compareTo()

The compareTo() method is used to know whether or not strings are identical. The following integer values are returned:

  • 0, means the strings are equal.
  • greater than 0: the caller string is greater than the argument string.
  • less than 0: the caller string is less than the argument string.

A string is said to be greater when it comes after the other in the dictionary, and lesser when it comes before the other in the dictionary.

This method is case sensitive.

"Hello".compareTo("Hello")   //0
"hello".compareTo("Hello")  //32

In this program, you'll learn to compare two strings in Java.

To understand this example, you should have the knowledge of the following Java programming topics:

  • Java Strings
  • Java Operators

Example 1: Compare two strings

public class CompareStrings {

    public static void main(String[] args) {

        String style = "Bold";
        String style2 = "Bold";

        if(style == style2)
            System.out.println("Equal");
        else
            System.out.println("Not Equal");
    }
}

Output

Equal

In the above program, we've two strings style and style2. We simply use the equal to operator (==) to compare the two strings, which compares the value Bold to Bold and prints Equal.


Example 2: Compare two strings using equals()

public class CompareStrings {

    public static void main(String[] args) {

        String style = new String("Bold");
        String style2 = new String("Bold");

        if(style.equals(style2))
            System.out.println("Equal");
        else
            System.out.println("Not Equal");
    }
}

Output

Equal

In the above program, we have two strings named style and style2 both containing the same world Bold.

However, we've used String constructor to create the strings. 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.

On the other hand, equals() method compares whether the value of the strings is equal, and not the object itself.

If you instead change the program to use equality operator, you'll get Not Equal as shown in the program below.


Example 3: Compare two string objects using == (Doesn't work)

public class CompareStrings {

    public static void main(String[] args) {

        String style = new String("Bold");
        String style2 = new String("Bold");

        if(style == style2)
            System.out.println("Equal");
        else
            System.out.println("Not Equal");
    }
}

Output

Not Equal

Example 4: Different ways to compare two strings

Here is the string comparison which is possible in Java.

public class CompareStrings {

    public static void main(String[] args) {

        String style = new String("Bold");
        String style2 = new String("Bold");

        boolean result = style.equals("Bold"); // true
        System.out.println(result);

        result = style2 == "Bold"; // false
        System.out.println(result);

        result = style == style2; // false
        System.out.println(result);

        result = "Bold" == "Bold"; // true
        System.out.println(result);
    }
}

Output

true
false
false
true

Can I use == to compare strings in Java?

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. On the other hand, equals() method compares whether the value of the strings is equal, and not the object itself.

Should I use .equals or == Java?

We 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.

Which method is used to compare two strings Java?

Using String. equals() :In Java, string equals() method compares the two given strings based on the data/content of the string.

Which method is used to compare to strings?

The compareTo() method compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings.