Table of contents
1.
Introduction
2.
What is a String?
3.
Why is String Comparison Important?
4.
Comparing Strings
5.
== operator
5.1.
Example
6.
compareTo() method
6.1.
Syntax
6.2.
Example
7.
equals() method
7.1.
Syntax
7.2.
Example
8.
equalsIgnoreCase() method
8.1.
Syntax
8.2.
Example
9.
Objects.equals() method
9.1.
Syntax
9.2.
Example
10.
Best Practices for String Comparison in Java
10.1.
1. Null Safety Tips
10.2.
2. Performance Considerations
11.
Real-World Examples of String Comparison
11.1.
1. Login Validation
11.2.
2. Sorting Strings Alphabetically
11.3.
3. Case-Insensitive Filtering in Search
12.
Frequently Asked Questions
12.1.
Are Strings in Java mutable?
12.2.
Which method can be used to compare strings with null values?
12.3.
What is the equals() method?
12.4.
Which method compares the string ignoring the case of the letters?
13.
Conclusion
Last Updated: Jun 7, 2025
Easy

String Comparison

Author Nagendra
1 upvote
Career growth poll
Do you think IIT Guwahati certified course can help you in your career?

Introduction

Java is one of the most popular programming languages. Learning Java reinforces essential computer science principles while also providing access to a wide range of professional options.
A string is a collection of characters in Java, while a char is a single number used to hold variables. By implementing strings as built-in objects, Java can provide a full set of features that facilitate string manipulation. It offers, among other things, techniques for comparing two strings, searching for a substring, and concatenating two strings. This blog discusses the many methods for string comparison.

String Comparison

Without further ado, let's get started.

Recommended Topic-  Iteration Statements in Java, and Duck Number in Java.

What is a String?

The string is an immutable class, which means that its object can't be changed after it's been formed, although it can reference other objects. Immutable objects are thread-safe in multithreading environments because many threads cannot change the state of the object. Arrays are unchangeable in Java, and strings are as well. In any instance, if a string is modified, a whole new string is created.

Some facts about Strings are : 

  • The index of strings starts from 0.
  • String objects are immutable.

Take a look at the example below to see how to convert all letters in a string to uppercase.

Code

public class Upper_Case {
   public static void main(String args[]) {
      String s = "string comparison";
    /*s.setCharAt(1,”A”); This will result in error as String is immutable*/
      System.out.println(s.toUpperCase());
   }
}
You can also try this code with Online Java Compiler
Run Code

Output

STRING COMPARISON

Explanation:

The toUpperCase() is a String class predefined function that returns all letters to uppercase.

Let's continue by learning different ways to compare strings.

Why is String Comparison Important?

String comparison is a key part of many everyday programming tasks. For example, when a user logs in, the app must compare the entered username and password with stored values. In search features, strings are compared to filter or match results. Even simple tasks like checking if a form input is valid often rely on string comparison.

If done incorrectly, it can cause serious problems. A login system might allow wrong passwords, or search results may not work as expected. In worse cases, it can lead to security issues like unauthorized access or data leaks.

There are several ways to compare strings in Java, such as using ==, .equals(), or .compareTo(). Each has its own purpose, which we’ll explore in the following sections. Understanding the right method to use is essential for writing correct and secure code.

Comparing Strings

A number of methods for string comparison are available in the Java String class. The following are a few of the most commonly utilised methods:

  • == operator
  • compareTo() method
  • equals() method
  • equalsIgnoreCase() method
  • Objects.equals() method

Let's get into each method in detail.

== operator

The == operator checks for reference equality rather than value equality that is, whether they are the same object. The string comparison returns true if two String variables point to the same memory object. Otherwise, the string comparison returns false.

Take a look at the example below to see how the == operator functions.

Example

With the help of the following code snippet, we will see the working of == operator.

Code

class string_comparison
{  
 public static void main(String args[])
 {  
   String s1="String";  
   String s2="String";  
   String s3=new String("String");  
   System.out.println(s1==s2);//returns true because both the objects refer to same instance
   System.out.println(s1==s3);// returns false because s3 refers to nonpool instance )
 }  
}  
You can also try this code with Online Java Compiler
Run Code

Output

true
false
You can also try this code with Online Java Compiler
Run Code

Explanation

The first statement returns true because the compiler has interned the literals, so they all refer to the same object.
The second statement returns false because each of the two string variables points to a different memory object.

Also see, Swap Function in Java

compareTo() method

When we need to identify the lexicographic order of Strings, we use the compareTo() method. It compares char values in the same way that equals() does.

The return value of the function is determined as :

  • It will return a value of 0 if the two strings are identical. 
  • If the first String object comes after the second string (string1 > string2), it returns a positive integer. 
  • If the first String object predates the second string(string1 < string2), it returns a negative integer.

Syntax

The compareTo() method has the following syntax:

public int compareTo(String s)
You can also try this code with Online Java Compiler
Run Code

Example

With the help of the following code snippet, we will see the working of compareTo() method.

Code

class String_comparison{  
 public static void main(String args[]){  
   String s1="String";  
   String s2="String";  
   String s3="Comparison";  
   System.out.println(s1.compareTo(s2));//0  
   System.out.println(s1.compareTo(s3));//16(because s1>s3)  
   System.out.println(s3.compareTo(s1));//-16(because s3 < s1 )  
 }  
}  
You can also try this code with Online Java Compiler
Run Code

Output

0
16
-16
You can also try this code with Online Java Compiler
Run Code

Explanation

The first statement prints 0 because the two strings are identical.
The second statement returns a positive value as String s1 > String s3.
The third statement returns a negative value as String s3 < String s1.

You can also read about the topic of Java Destructor and Hashcode Method in Java.

equals() method

The equals() function in Java compares two provided strings depending on their data. It returns true if the contents of both strings are identical. It returns false if any character does not match.

Syntax

The equals() method has the following syntax:

public boolean equals(object a)
You can also try this code with Online Java Compiler
Run Code

Example

With the help of the following code snippet, we will see the working of equals() method.

Code

class String_comparison{  
 public static void main(String args[])
 {  
   String s1="String";  
   String s2="String";  
   String s3="Comparison";  
   System.out.println(s1.equals(s2));//true  
   System.out.println(s1.equals(s3));//false because both are different strings  
 }  
}  
You can also try this code with Online Java Compiler
Run Code

Output

true
false
You can also try this code with Online Java Compiler
Run Code

Explanation

The first statement prints true because the two strings are identical.
The second statement prints false because both are different strings.

equalsIgnoreCase() method

The equalsIgnoreCase() compares two strings lexicographically, disregarding case differences. It returns true if the contents of both strings are identical regardless of the string's case (lower or upper); otherwise, it returns false.

Syntax

The equalsIgnoreCase() method has the following syntax:

public boolean equalsIgnoreCase(String s)
You can also try this code with Online Java Compiler
Run Code

Example

With the help of the following code snippet, we will see the working of equals() method.

Code

class String_comparison{  
 public static void main(String args[]){  
   String s1="String";  
   String s2="STRING";  
   String s3="Comparison";  
   System.out.println(s1.equals(s2));//true  
   System.out.println(s1.equals(s3));//false because both are different strings  
 }  
}  
You can also try this code with Online Java Compiler
Run Code

Output

true
false
You can also try this code with Online Java Compiler
Run Code

Explanation

The first statement prints true because the two strings are identical, ignoring the case.
The second statement prints false because both are different strings.

Objects.equals() method

If the arguments are equal, this method returns true; otherwise, it returns false. As a result, true is returned if both arguments are null, and false is returned if only one argument is null. Otherwise, the equals() method is used to determine equality.

Syntax

The Object.equals() method has the following syntax:

public static boolean equals(Object a , Object b)
You can also try this code with Online Java Compiler
Run Code

Example

With the help of the following code snippet, we will see the working of equals() method.

Code

import java.util.*;
class String_comparison{  
 public static void main(String args[]){  
   String s1="String";  
   String s2="String";  
   String s3="Comparison";  
   System.out.println(Objects.equals(s1, s2));//true
   System.out.println(Objects.equals(null, null));//true
   System.out.println(Objects.equals(s1, s3));//false because both are different strings  
 }  
}  
You can also try this code with Online Java Compiler
Run Code

Output

true
true
false
You can also try this code with Online Java Compiler
Run Code

 

Try it on java compiler.

Explanation

The first statement prints true because the two strings are identical.
The second statement prints true because both are null strings having no data (identical).
The third statement prints false because both are different strings.

Must Read Conditional Statements in Java

Best Practices for String Comparison in Java

1. Null Safety Tips

A common issue in Java is the NullPointerException when .equals() is called on a null string. To avoid this:

  • Use: "admin".equals(userInput)
  • Avoid: userInput.equals("admin") — this can throw an error if userInput is null.

A safer and cleaner approach is using Objects.equals(str1, str2), which returns true even if both strings are null:

Objects.equals(userInput, "admin");

You can also use utility methods like StringUtils.equals() from Apache Commons Lang for null-safe comparisons.

2. Performance Considerations

Use .equals() for case-sensitive exact matches. Use .equalsIgnoreCase() only when necessary, as it involves extra processing:

"Apple".equals("apple");           // false "Apple".equalsIgnoreCase("apple"); // true 

For sorting, use .compareTo() or .compareToIgnoreCase() as needed. In high-frequency comparisons, avoid repeated case conversions. Also, be mindful of string interning (==)—it works only when strings are explicitly interned or compile-time constants.

Real-World Examples of String Comparison

1. Login Validation

String comparison is critical in login systems to verify user credentials:

if (inputUsername.equals(storedUsername)) {
    System.out.println("Login successful");
}

This ensures that only users with valid information can access the system.

2. Sorting Strings Alphabetically

String comparison is used to sort lists alphabetically using compareTo():

List<String> names = Arrays.asList("Charlie", "Alice", "Bob");
Collections.sort(names);
System.out.println(names);

This is useful for displaying organized lists in reports or user interfaces.

3. Case-Insensitive Filtering in Search

To match user input regardless of case, convert both strings to the same case:

if (data.toLowerCase().contains(userInput.toLowerCase())) {
    System.out.println("Match found");
}

This improves usability by allowing flexible search functionality.

Frequently Asked Questions

Are Strings in Java mutable?

No, Strings in Java are immutable.

Which method can be used to compare strings with null values?

The Objects.equals() method can be used to compare strings with null values.

What is the equals() method?

The equals() method is used when two strings are compared; it returns true if they are equal and false if they are not.

Which method compares the string ignoring the case of the letters?

The equalsIgnoreCase() method compares the string ignoring the case of the letters.

Conclusion

String comparison is a fundamental concept every Java developer must understand. Whether you're building login systems, search features, or sorting mechanisms, choosing the right comparison method is essential for writing accurate, secure, and efficient code. By following best practices like null safety and knowing when to use .equals(), .equalsIgnoreCase(), or .compareTo(), you can avoid common pitfalls such as unexpected behavior or runtime errors. With real-world examples and simple guidelines, mastering string comparison will help you build more reliable and user-friendly applications.

Also check out - String Interview Questions In Java

Recommended problems -

Live masterclass