javastringstring-utils

StringUtils.isBlank() vs String.isEmpty()


I ran into some code that has the following:

String foo = getvalue("foo");
if (StringUtils.isBlank(foo))
    doStuff();
else
    doOtherStuff();

This appears to be functionally equivalent to the following:

String foo = getvalue("foo");
if (foo.isEmpty())
    doStuff();
else
    doOtherStuff();

Is a difference between the two (org.apache.commons.lang3.StringUtils.isBlank and java.lang.String.isEmpty)?


Solution

  • StringUtils.isBlank() checks that each character of the string is a whitespace character (or that the string is empty or that it's null). This is totally different than just checking if the string is empty.

    From the linked documentation:

    Checks if a String is whitespace, empty ("") or null.

     StringUtils.isBlank(null)      = true
     StringUtils.isBlank("")        = true  
     StringUtils.isBlank(" ")       = true  
     StringUtils.isBlank("bob")     = false  
     StringUtils.isBlank("  bob  ") = false
    

    For comparison StringUtils.isEmpty:

     StringUtils.isEmpty(null)      = true
     StringUtils.isEmpty("")        = true  
     StringUtils.isEmpty(" ")       = false  
     StringUtils.isEmpty("bob")     = false  
     StringUtils.isEmpty("  bob  ") = false
    

    Warning: In java.lang.String.isBlank() and java.lang.String.isEmpty() work the same except they don't return true for null.

    java.lang.String.isBlank() (since Java 11)

    java.lang.String.isEmpty()