Java String compareTo() Method: How to Use with Examples

What is compareTo() method in Java?

compareTo() is used for comparing two strings lexicographically. Each character of both strings are converted into a Unicode value. However, if both the strings are equal, then this method returns 0 else it only result either negative or positive value.

The Java String compareTo() method is defined in interface java.lang.Comparable

Syntax: How to write a compareTo() method in Java:

public int compareTo(String str)

Parameter input :

str – The compareTo() function in Java accepts only one input String data type.

Method Returns:

This compareTo() Java method returns an int datatype which is based on the lexicographical comparison between two strings.

  • returns < 0 then the String calling the method is lexicographically first
  • returns == 0 then the two strings are lexicographically equivalent
  • returns > 0 then the parameter passed to the Java compareTo() method is lexicographically first.

Java String compareTo() method Example:

compareTo() Java Example 1:

public class Sample_String {
    public static void main(String[] args) {

        String str_Sample = "a";
        System.out.println("Compare To 'a' b is : " + str_Sample.compareTo("b"));
        str_Sample = "b";
        System.out.println("Compare To 'b' a is : " + str_Sample.compareTo("a"));
        str_Sample = "b";
        System.out.println("Compare To 'b' b is : " + str_Sample.compareTo("b"));
    }

}

Output

Compare To ‘a’ b is : -1
Compare To ‘b’ a is : 1
Compare To ‘b’ b is : 0

Here,

  • Character a comes before b alphabetically. Hence output is -1
  • Character b comes after a alphabetically. Hence output is 1
  • Character b are equivalent, hence output is 0.

You can use method Use “compareToIgnoreCase” in case you don’t want the result to be case sensitive. Let’s understand with a Java compareTo() Example.

compareTo() Java Example 2:

public class Sample_String {
    public static void main(String[] args) {
        //Compare to a String
        String str_Sample = "RockStar";
        System.out.println("Compare To 'ROCKSTAR': " + str_Sample.compareTo("rockstar"));
        //Compare to - Ignore case
        System.out.println("Compare To 'ROCKSTAR' - Case Ignored: " + str_Sample.compareToIgnoreCase("ROCKSTAR"));
    }
}

Output

Compare To ‘ROCKSTAR’: -32
Compare To ‘ROCKSTAR’ – Case Ignored: 0

When to use compareTo() method in Java?

Java String compareTo() method is used to perform natural sorting on string. Natural sorting means the sort order which applies on the object, e.g., lexical order for String, numeric order for Sorting integers, etc.

Lexical order is nothing but alphabetical order. compareTo() Java method does a sequential comparison of letters in the string that have the same position.

In this method, if the first string is always lexicographically higher than second string, it returns a positive number.

if a1 > a2, it returns negative number

if a1 < a2, it returns positive number

if a1 == a2, it returns 0

Let’s understand with Java String compareTo() Example.

compareTo() Java Example 3:

public class Compare {
    public static void main(String[] args) {
        String s1 = "Guru1";
        String s2 = "Guru2";
        System.out.println("String 1: " + s1);
        System.out.println("String 2: " + s2);

        // Compare the two strings.  
        int S = s1.compareTo(s2);

        // Show the results of the comparison.  
        if (S < 0) {
            System.out.println("\"" + s1 + "\"" + " is lexicographically higher than " + "\"" + s2 + "\"");
        } else if (S == 0) {
            System.out.println("\"" + s1 + "\"" + " is lexicographically  equal to " + "\"" + s2 + "\"");
        } else if (S > 0) {
            System.out.println("\"" + s1 + "\"" + " is lexicographically less than " + "\"" + s2 + "\"");
        }
    }
}

Output:

String 1: Guru1
String 2: Guru2
“Guru1” is lexicographically higher than “Guru2”