Java String isEmpty vs isBlank

Java String isEmpty vs isBlank: A Detailed Comparison

In this blog post, we will explore the isEmpty vs isBlank methods of the String class in Java. We will also see some examples and scenarios where these methods can be useful.

Introduction

In Java, working with strings is fundamental, and the methods to check for empty or blank strings play a crucial role in ensuring robust code. The confusion often arises between isEmpty() and isBlank() methods in the java.lang.String class. This detailed guide breaks down these methods with different sets of examples to help you understand how they work and when to use them.

What are isEmpty and isBlank methods?

The isEmpty and isBlank methods are used to check if a string is empty or blank, respectively. An empty string is a string that has no characters, while a blank string is a string that has only whitespace characters.

The isEmpty method was introduced in Java 6, and it returns true if and only if the length of the string is zero. The isBlank method was introduced in Java 11, and it returns true if the string is empty or contains only whitespace characters.

The whitespace characters are the space character (\s) and the escape sequences \t\n\r, and \f.



How to use isEmpty and isBlank methods?

The syntax of the isEmpty and isBlank methods is very simple. They are instance methods of the String class, so they can be invoked on any string object. They do not take any parameters, and they return a boolean value.

For example:

String str1 = ""; // an empty string
String str2 = " "; // a string with a space
String str3 = "Hello"; // a string with characters
String str4 = "\n\t\r\f"; // a string with escape sequences


System.out.println(str1.isEmpty()); // true, because str1 has no characters
System.out.println(str2.isEmpty()); // false, because str2 has 1 character (a space)
System.out.println(str3.isEmpty()); // false, because str3 has 5 characters
System.out.println(str4.isEmpty()); // false, because str4 has 4 characters (escape sequences)


System.out.println(str1.isBlank()); // true, because str1 has no characters
System.out.println(str2.isBlank()); // true, because str2 has only a whitespace character (a space)
System.out.println(str3.isBlank()); // false, because str3 has a non-whitespace character (H)
System.out.println(str4.isBlank()); // true, because str4 has only whitespace characters (escape sequences)
Java

When to use isEmpty and isBlank methods?

The isEmpty and isBlank methods can be useful for validating user input, checking the state of variables, or performing conditional logic based on the content of strings.

For example, suppose we have a method that takes a user name as a parameter, and we want to check if the user name is valid. A valid user name should not be empty or blank, and it should have at least three characters. We can use the isEmpty and isBlank methods to implement this logic:

public static boolean isValidUserName(String userName) {

  if (userName == null || userName.isEmpty() || userName.isBlank()) {
    return false;
  }
  
  if (userName.length() < 3) {
    return false;
  }
  
  return true;
}
Java


Null Strings: How isEmpty() & isBlank() Behave?

When dealing with null strings in Java, both isEmpty() and isBlank() methods respond by throwing a NullPointerException. Remember, it’s crucial to check for null strings before using these methods to prevent unexpected errors in your code.

For example, we can use the Objects class methods, such as Objects.isNull or Objects.requireNonNull, to check or enforce that a string is not null. Alternatively, we can use the StringUtils class methods from Apache Commons Lang, such as StringUtils.isEmpty or StringUtils.isBlank, which return true for null values, as well as empty or blank values.

Comparing isEmpty vs isBlank

The main difference between the isEmpty and isBlank methods is that the isEmpty method only checks the length of the string, while the isBlank method also checks the characters of the string.

The isEmpty method returns true if the string has no characters, and false otherwise. The isBlank method returns true if the string has no characters or only whitespace characters, and false otherwise.

Another way to think about the difference is that an empty string is always blank, but a blank string may or may not be empty.

Here’s a breakdown highlighting the key differences between isEmpty() and isBlank() methods:

  • Introduction:
    • isEmpty() was introduced in Java 6.
    • isBlank() was introduced in Java 11, enhancing string handling capabilities significantly.
  • Functionality:
    • isEmpty() checks solely the string’s length.
    • isBlank() evaluates both the length and characters of the string.
  • Return Values:
    • isEmpty() returns true only if the string lacks any characters.
    • isBlank() returns true for character-less strings or those with only whitespace characters; otherwise, it returns false.
  • Whitespace Handling:
    • isEmpty() doesn’t distinguish between whitespace and other characters.
    • isBlank() rigorously differentiates, considering whitespace characters separately from non-whitespace characters.
isEmpty():
- No character:       "".isEmpty() -> true
- \t (tab):           "\t".isEmpty() -> false
- \n (newline):       "\n".isEmpty() -> false
- \r (carriage return): "\r".isEmpty() -> false
- \f (form feed):     "\f".isEmpty() -> false
- \s (space):         " ".isEmpty() -> false
- Any other:          "Hello".isEmpty() -> false

isBlank():
- No character:       "".isBlank() -> true
- \t (tab):           "\t".isBlank() -> true
- \n (newline):       "\n".isBlank() -> true
- \r (carriage return): "\r".isBlank() -> true
- \f (form feed):     "\f".isBlank() -> true
- \s (space):         " ".isBlank() -> true
- Any other:          "Hello".isBlank() -> false
Java


Things to Consider

Here are some key considerations while using isEmpty() and isBlank():

  • Version Compatibility: The isBlank method is only available in Java 11 or later versions. If you are using an older version of Java, you can use the trim method to remove leading and trailing whitespace from a string, and then use the isEmpty method to check if the result is empty. However, the trim method may not remove all whitespace characters, such as non-breaking spaces or zero-width spaces. The strip method, which is also introduced in Java 11, is more robust and can handle all whitespace characters.
  • Null Checks: The isEmpty and isBlank methods do not check for null values. If you pass a null reference to these methods, you will get a NullPointerException. Therefore, you should always check for null values before using these methods, or use the Objects class methods such as Objects.isNull or Objects.requireNonNull.
  • Use Case Analysis: Use isEmpty() when only an exact empty string (“”) needs validation. Use isBlank() when dealing with strings that might contain whitespace characters.

FAQs

How to check if a string is null, empty, or blank in Java?

When to use isEmpty() over isBlank()?

Can isBlank() differentiate between various whitespace characters?

Is there a performance difference between isEmpty() and isBlank()?

How should I handle NullPointerExceptions when using these methods?

Can isBlank() handle non-English whitespace characters?

Conclusion

In this blog, we’ve explored how isEmpty() and isBlank() methods work differently in Java for checking strings. Through easy examples, we’ve seen how they’re used. We’ve also covered key points to remember and answered common questions, helping us understand these methods better for managing Strigs in Java.

Learn More

#

Interested in learning more?

Check out our blog on how to disable Spring Boot Actuator metrics

Top Picks for Learning Java

Explore the recommended Java books tailored for learners at different levels, from beginners to advanced programmers.

Disclaimer: The products featured or recommended on this site are affiliated. If you purchase these products through the provided links, I may earn a commission at no additional cost to you.

1
Java: The Complete Reference
13th Edition

Java: The Complete Reference

  • All Levels Covered: Designed for novice, intermediate, and professional programmers alike
  • Accessible Source Code: Source code for all examples and projects are available for download
  • Clear Writing Style: Written in the clear, uncompromising style Herb Schildt is famous for
2
Head First Java: A Brain-Friendly Guide

Head First Java: A Brain-Friendly Guide

  • Engaging Learning: It uses a fun approach to teach Java and object-oriented programming.
  • Comprehensive Content: Covers Java's basics and advanced topics like lambdas and GUIs.
  • Interactive Learning: The book's visuals and engaging style make learning Java more enjoyable.
3
Modern Java in Action: Lambdas, streams, functional and reactive programming
2nd Edition

Modern Java in Action: Lambdas, streams, functional and reactive programming

  • Latest Java Features: Explores modern Java functionalities from version 8 and beyond, like streams, modules, and concurrency.
  • Real-world Applications: Demonstrates how to use these new features practically, enhancing understanding and coding skills.
  • Developer-Friendly: Tailored for Java developers already familiar with core Java, making it accessible for advancing their expertise.
4
Java For Dummies
8th Edition

Java For Dummies

  • Java Essentials: Learn fundamental Java programming through easy tutorials and practical tips in the latest edition of the For Dummies series.
  • Programming Basics: Gain control over program flow, master classes, objects, and methods, and explore functional programming features.
  • Updated Coverage: Covers Java 17, the latest long-term support release, including the new 'switch' statement syntax, making it perfect for beginners or those wanting to brush up their skills.

Add a Comment

Your email address will not be published.