Java String compareToIgnoreCase​ method example - Internal Implementation


A Quick Guide to Java String compareToIgnoreCase​ method example and it is in java.lang.String package. Explained its internal implementation lexicographically.

String compareToIgnoreCase​ method in java with example:

compareToIgnoreCase​() method compares two strings lexicographically by comparing the each character in both strings and ignoring case differences. 

This method returns an integer whose sign is that of calling compareTo with normalized versions of the strings where case differences have been eliminated by calling Character.toLowerCase(Character.toUpperCase(character)) on each character. 

String compareToIgnoreCase​()


Here is the syntax of this method.

public int compareToIgnoreCase​(String str)

Return type: int

A negative integer, zero, or a positive integer as the specified String is greater than, equal to, or less than this String, ignoring case considerations.

Recommended to learn how String compareTo() method compare two strings lexicographically.

As we know compareTo() method does the same thing, however there is a difference between these two methods. Unlike compareTo() method, the compareToIgnoreCase() method ignores the case (uppercase or lowercase) while comparing strings.

Java String compareToIgnoreCase() example 1:

Let us write a example program to see what will be the output for these two methods for same strings with lowercase and uppercase.

package examples.java.w3schools.string;

public class StringcompareToIgnoreCaseExample1 {
 public static void main(String[] args) {
  String str1 = "java-w3schools";
  String str2 = "JAVA-W3SCHOOLS";
  System.out.println("compareTo Demo: str1.compareTo(str2) : "+str1.compareTo(str2));
  System.out.println("compareToIgnoreCase Demo: str1.compareToIgnoreCase(str2) : "+str1.compareToIgnoreCase(str2));

Java String compareToIgnoreCase() example 1

Similar to compareTo() method, the compareToIgnoreCase() method compares the strings based on the Unicode value of their each character. It returns 0 when the strings are equal otherwise it returns positive or negative value. Please refer the following output.


compareTo Demo: str1.compareTo(str2) : 32
compareToIgnoreCase Demo: str1.compareToIgnoreCase(str2) : 0

Java String compareToIgnoreCase() example 2:

In this example, taking 3 strings named str1, str2, str3 with same content. Only change in case levels.

str1 in lower case

str1 in Upper case
str1 in both lower and upper case

Here comparing all possible cases with these 3 strings.

package examples.java.w3schools.string;

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

  String str1 = "world"; // lower case
  String str2 = "WORLD"; // Upper cas
  String str3 = "WorlD"; // Both upper and lower cases

  System.out.println("Comparing str1 and str2: " + str1.compareToIgnoreCase(str2));
  System.out.println("Comparing str2 and str3: " + str2.compareToIgnoreCase(str3));
  System.out.println("Comparing str3 and str1: " + str3.compareToIgnoreCase(str1));

  // All these three Comparisions will be treated as values are equal. Because this method ignores the case types. 

When we run the program, we will get the output ZERO means contents are same.

Java String compareToIgnoreCase() example 2


Comparing str1 and str2: 0
Comparing str2 and str3: 0
Comparing str3 and str1: 0

Java String compareToIgnoreCase() example 3:

what if there are two different strings with different case?

Taking two Strings "Onee" and "One". The first string has extra character 'e'. So, by looking at string we can tell that these are not same. So, compareToIgnoreCase() and compareTo() both methods returns same output.

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

  String value1 = "Onee"; // String 1
  String value2 = "One"; // String 2

  System.out.println("Comparing value1 and value2 using  compareToIgnoreCase(): " + value1.compareToIgnoreCase(value2));
  System.out.println("Comparing value1 and value2 using compareTo(): " + value1.compareTo(value2));

Java String compareToIgnoreCase() example 3


Comparing value1 and value2 using  compareToIgnoreCase(): 1
Comparing value1 and value2 using compareTo(): 1

Observe the output is same for both methods. First checks length of both strings are same. If same then will check char by char. If not then will return the difference of string 1 length and string 2 length.

String compareToIgnoreCase​() method Internal Implementation:

The below code is from String class compareToIgnoreCase() method and calls compare method of comparator CASE_INSENSITIVE_ORDER.

 public int compareToIgnoreCase(String str) {
        return CASE_INSENSITIVE_ORDER.compare(this, str);

compareToIgnoreCase​() method has its own Comparator implementation for ignoring case differences.

    public static final Comparator CASE_INSENSITIVE_ORDER = new CaseInsensitiveComparator();

Code of compare method:

 public int compare(String s1, String s2) 
            byte v1[] = s1.value;
            byte v2[] = s2.value;
            if (s1.coder() == s2.coder()) {
                return s1.isLatin1() ? StringLatin1.compareToCI(v1, v2)
                                     : StringUTF16.compareToCI(v1, v2);
            return s1.isLatin1() ? StringLatin1.compareToCI_UTF16(v1, v2)
                                 : StringUTF16.compareToCI_Latin1(v1, v2);


1) It takes first character from both strings.
2) Convert into upper case both characters.
3) Comparing both are same.
4) If not same, then convert into lower case.
5) Compare again lower case characters
6) If same then continue with next character in both strings till last character.
7) If not same then return diff of both characters ASCII Code.
8) If all characters are same in both strings then returns diff of both strings length.



About Us

Author: Venkatesh - I love to learn and share the technical stuff.

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,18,Arrays,24,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,8,Collections,37,Collector,1,Command Line,1,Comparator,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,149,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,38,Dictionary,1,Difference,2,Download,1,Eclipse,3,Efficiently,1,Error,1,Errors,1,Exceptions,8,Fast,1,Files,17,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,9,Grant,1,Grep,1,HashMap,2,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,6,Iterate,2,Jackson API,3,Java,32,Java 10,1,Java 11,6,Java 12,5,Java 13,2,Java 14,2,Java 8,128,Java 8 Difference,2,Java 8 Stream Conversions,4,java 8 Stream Examples,12,Java 9,1,Java Conversions,14,Java Design Patterns,1,Java Files,1,Java Program,3,Java Programs,114,Java Spark,1,java.lang,4,java.util. function,1,JavaScript,1,jQuery,1,Kotlin,11,Kotlin Conversions,6,Kotlin Programs,10,Lambda,2,lang,29,Leap Year,1,live updates,1,LocalDate,1,Logging,1,Mac OS,3,Math,1,Matrix,6,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,2,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,31,String,61,String Programs,28,String Revese,1,StringBuilder,1,Swing,1,System,1,Tags,1,Threads,11,Tomcat,1,Tomcat 8,1,Troubleshoot,26,Unix,3,Updates,3,util,5,While Loop,1,
JavaProgramTo.com: Java String compareToIgnoreCase​ method example - Internal Implementation
Java String compareToIgnoreCase​ method example - Internal Implementation
A Quick Guide to Java String compareToIgnoreCase​ method example and it is in java.lang.String package. Explained its internal implementation lexicographically.
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content