Como Verificar se uma String Está Vazia em Java

JavaBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se uma string está em branco em Java. Você explorará o método isBlank(), introduzido no Java 11, que determina eficientemente se uma string está vazia ou contém apenas caracteres de espaço em branco (whitespace).

Através de exemplos práticos, você primeiro usará isBlank() para verificar vários tipos de strings. Em seguida, você aprenderá como combinar isBlank() com uma verificação de nulo (null check) para uma validação de string robusta. Finalmente, você comparará o comportamento de isBlank() e isEmpty() para entender suas principais diferenças.

Usar isBlank() para Verificar Strings Vazias

Nesta etapa, você aprenderá como usar o método isBlank() em Java para verificar se uma string está em branco. Uma string em branco é uma string que contém apenas caracteres de espaço em branco (espaços, tabs, quebras de linha) ou está vazia.

O método isBlank() foi introduzido no Java 11 e é uma maneira conveniente de verificar strings em branco. Ele retorna true se a string estiver vazia ou contiver apenas espaço em branco, e false caso contrário.

Vamos criar um programa Java simples para demonstrar o método isBlank().

  1. Abra o arquivo HelloJava.java no editor WebIDE, se ele ainda não estiver aberto.

  2. Substitua todo o conteúdo do arquivo pelo seguinte código:

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // String vazia
            String str2 = "   "; // String com apenas espaços
            String str3 = "Hello"; // String não em branco
            String str4 = " Hello "; // String com espaços no início/fim
    
            System.out.println("Is str1 blank? " + str1.isBlank());
            System.out.println("Is str2 blank? " + str2.isBlank());
            System.out.println("Is str3 blank? " + str3.isBlank());
            System.out.println("Is str4 blank? " + str4.isBlank());
        }
    }

    Neste código:

    • Declaramos quatro strings diferentes: uma string vazia, uma string com apenas espaços, uma string não em branco e uma string com espaços no início/fim.
    • Usamos str.isBlank() para verificar se cada string está em branco e imprimir o resultado.
  3. Salve o arquivo (Ctrl+S ou Cmd+S).

  4. Agora, vamos compilar o programa. Abra o Terminal na parte inferior do WebIDE e certifique-se de estar no diretório ~/project. Caso contrário, use o comando cd ~/project. Em seguida, compile o código usando o comando javac:

    javac HelloJava.java

    Se não houver erros, um arquivo HelloJava.class será criado no diretório ~/project.

  5. Finalmente, execute o programa compilado usando o comando java:

    java HelloJava

    Você deve ver a seguinte saída:

    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? false

    Como você pode ver, isBlank() identifica corretamente a string vazia (str1) e a string com apenas espaços (str2) como em branco, enquanto str3 e str4 são consideradas não em branco porque contêm caracteres que não são espaços em branco.

Combinar isBlank() com Verificação de Nulo

Na etapa anterior, você aprendeu como usar isBlank() para verificar strings vazias ou que contêm apenas espaços em branco. No entanto, isBlank() lançará uma NullPointerException se a variável string for null. Em aplicações do mundo real, é comum encontrar strings null, por isso é importante tratá-las de forma adequada.

Para verificar com segurança se uma string é null ou em branco, você deve combinar uma verificação de nulo com o método isBlank(). A maneira mais comum de fazer isso é usando uma instrução if:

if (str == null || str.isBlank()) {
    // A string é nula ou em branco
} else {
    // A string não é nula e não está em branco
}

Vamos modificar nosso programa para incluir uma string nula e demonstrar como tratá-la.

  1. Abra o arquivo HelloJava.java no editor WebIDE.

  2. Substitua o código atual pelo seguinte:

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // String vazia
            String str2 = "   "; // String com apenas espaços
            String str3 = "Hello"; // String não em branco
            String str4 = null; // String nula
    
            System.out.println("Is str1 null or blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 null or blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 null or blank? " + (str3 == null || str3.isBlank()));
            System.out.println("Is str4 null or blank? " + (str4 == null || str4.isBlank()));
        }
    }

    Neste código atualizado:

    • Adicionamos uma variável string null chamada str4.
    • Usamos a condição str == null || str.isBlank() para verificar se cada string é null ou em branco. O operador || significa "ou". Se a primeira parte (str == null) for verdadeira, a segunda parte (str.isBlank()) nem é verificada, o que impede a NullPointerException.
  3. Salve o arquivo (Ctrl+S ou Cmd+S).

  4. Compile o programa modificado no Terminal:

    javac HelloJava.java
  5. Execute o programa compilado:

    java HelloJava

    Você deve ver a seguinte saída:

    Is str1 null or blank? true
    Is str2 null or blank? true
    Is str3 null or blank? false
    Is str4 null or blank? true

    Esta saída mostra que nossa verificação combinada identifica corretamente a string vazia, a string com espaços e a string nula como "nula ou em branco", enquanto a string não em branco é corretamente identificada como "não nula ou em branco".

Combinar a verificação de nulo com isBlank() é uma maneira robusta de lidar com vários estados de string em seus programas Java.

Comparar isBlank() e isEmpty()

Nas etapas anteriores, você usou isBlank() para verificar strings que estão vazias ou contêm apenas espaços em branco. Você também pode ter ouvido falar do método isEmpty() em Java. Nesta etapa, compararemos isBlank() e isEmpty() para entender a diferença entre eles.

O método isEmpty() está disponível em Java desde a versão 1.0. Ele retorna true somente se a string tiver um comprimento de 0 (ou seja, é uma string vazia ""). Ele retorna false para qualquer outra string, incluindo strings que contêm apenas espaços em branco.

Vamos modificar nosso programa pela última vez para usar isBlank() e isEmpty() e ver como eles se comportam com diferentes tipos de strings.

  1. Abra o arquivo HelloJava.java no editor WebIDE.

  2. Substitua o código atual pelo seguinte:

    public class HelloJava {
        public static void main(String[] args) {
            String str1 = ""; // String vazia
            String str2 = "   "; // String com apenas espaços
            String str3 = "Hello"; // String não em branco
            String str4 = null; // String nula
    
            System.out.println("--- Usando isBlank() ---");
            System.out.println("Is str1 blank? " + (str1 == null || str1.isBlank()));
            System.out.println("Is str2 blank? " + (str2 == null || str2.isBlank()));
            System.out.println("Is str3 blank? " + (str3 == null || str3.isBlank()));
            // Nota: Ainda precisamos da verificação de nulo antes de chamar isBlank()
            System.out.println("Is str4 blank? " + (str4 == null || str4.isBlank()));
    
            System.out.println("\n--- Usando isEmpty() ---");
            // Nota: Também precisamos de uma verificação de nulo antes de chamar isEmpty()
            System.out.println("Is str1 empty? " + (str1 == null || str1.isEmpty()));
            System.out.println("Is str2 empty? " + (str2 == null || str2.isEmpty()));
            System.out.println("Is str3 empty? " + (str3 == null || str3.isEmpty()));
            System.out.println("Is str4 empty? " + (str4 == null || str4.isEmpty()));
        }
    }

    Neste código:

    • Adicionamos seções para demonstrar isBlank() e isEmpty().
    • Usamos a verificação de nulo combinada (str == null || ...) antes de chamar isBlank() e isEmpty() para evitar NullPointerException.
  3. Salve o arquivo (Ctrl+S ou Cmd+S).

  4. Compile o programa no Terminal:

    javac HelloJava.java
  5. Execute o programa compilado:

    java HelloJava

    Você deve ver a seguinte saída:

    --- Usando isBlank() ---
    Is str1 blank? true
    Is str2 blank? true
    Is str3 blank? false
    Is str4 blank? true
    
    --- Usando isEmpty() ---
    Is str1 empty? true
    Is str2 empty? false
    Is str3 empty? false
    Is str4 empty? true

    Pela saída, você pode observar a principal diferença:

    • isBlank() retorna true para strings vazias ("") e strings com apenas espaços em branco (" ").
    • isEmpty() retorna true apenas para strings vazias (""). Ele retorna false para strings com apenas espaços em branco (" ").

    Ambos os métodos exigem uma verificação de nulo antes de serem chamados em uma string potencialmente nula.

Em resumo:

  • Use isEmpty() quando você só quiser verificar se uma string tem comprimento zero.
  • Use isBlank() quando você quiser verificar se uma string está vazia ou contém apenas caracteres de espaço em branco.

Entender a diferença entre esses dois métodos é crucial para escrever um código de manipulação de strings correto e robusto em Java.

Resumo

Neste laboratório, você aprendeu como verificar se uma string está em branco em Java usando o método isBlank(), que foi introduzido no Java 11. Você praticou o uso de isBlank() em diferentes tipos de strings, incluindo strings vazias, strings com apenas espaços em branco e strings com conteúdo. Você também compilou e executou um programa Java simples para demonstrar a funcionalidade de isBlank().