Java String compareTo() method compares two strings lexicographically. We can consider it dictionary based comparison.
Tóm Tắt
1. String comparison
If a string 'str1'
comes before another string 'str2'
in dictionary, then str2
is said to be greater than 'str1'
in string comparison.
string1 > string2
– ‘string1’ comes AFTER ‘string2’ in dictionary.
string1 < string2
– ‘string1’ comes BEFORE ‘string2’ in dictionary.
string1 = string2
– ‘string1’ and ‘string2’ are equal.
2. String compareTo() method
In compareTo() method, two strings are compared lexicographically (dictionary order). The first string is the String object itself on which method is called. Second string is argument to method.
This method does the string comparison based on the Unicode value of each character in the strings.
2.1. Method return type
The result of this method is in integer value where –
- positive integer – means string object lexicographically follows the argument string.
- negative integer – means string object lexicographically precedes the argument string.
- zero – means both strings are equal.
2.2. Method syntax
Java compareTo() method implementation.
public int compareTo(String anotherString) { int len1 = value.length; int len2 = anotherString.value.length; int lim = Math.min(len1, len2); char v1[] = value; char v2[] = anotherString.value; int k = 0; while (k < lim) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2; } k++; } return len1 - len2; }
3. Java String compareTo() example
Learn how to call compareTo() method on Java strings.
public class Main { public static void main(String[] args) { System.out.println( "apple".compareTo("banana") ); //-1 - apple comes before banana System.out.println( "apple".compareTo("cherry") ); //-2 - apple comes before cherry System.out.println( "cherry".compareTo("banana") ); //1 - cherry comes after banana System.out.println( "cherry".compareTo("cherry") ); //0 - Both strings are equal } }
4. Java String compareToIgnoreCase() example
Java program to compare two strings in case-insensitive manner. Notice that compareTo()
and compareToIgnoreCase()
methods behave in same way, except later is case-insensitive.
In given example, notice the string comparison in first two statements, how changing the case of string may change the result and ordering.
Note again the comparison is done character by character for both strings – after converting each character to unicode value.
public class Main { public static void main(String[] args) { System.out.println( "apple".compareTo("BANANA") ); //31 System.out.println( "apple".compareToIgnoreCase("banana") ); //-1 System.out.println( "cherry".compareTo("cherry") ); //0 System.out.println( "cherry".compareToIgnoreCase("CHERRY") ); //0 } }
Happy Learning !!
Reference: String Java Doc