javastringconditional-statementsstring-comparisonboolean-logic

Check whether a String is not Null and not Empty


How can I check whether a string is not null and not empty?

public void doStuff(String str)
{
    if (str != null && str != "**here I want to check the 'str' is empty or not**")
    {
        /* handle empty string */
    }
    /* ... */
}

Solution

  • What about isEmpty() ?

    if(str != null && !str.isEmpty())
    

    Be sure to use the parts of && in this order, because java will not proceed to evaluate the second part if the first part of && fails, thus ensuring you will not get a null pointer exception from str.isEmpty() if str is null.

    Beware, it's only available since Java SE 1.6. You have to check str.length() == 0 on previous versions.


    To ignore whitespace as well:

    if(str != null && !str.trim().isEmpty())
    

    (since Java 11 str.trim().isEmpty() can be reduced to str.isBlank() which will also test for other Unicode white spaces)

    Wrapped in a handy function:

    public static boolean empty( final String s ) {
      // Null-safe, short-circuit evaluation.
      return s == null || s.trim().isEmpty();
    }
    

    Becomes:

    if( !empty( str ) )