Combinar Verificações de Nulo e Vazio
Na etapa anterior, aprendemos como verificar se uma string é null. No entanto, em muitos cenários do mundo real, você também pode precisar verificar se uma string está vazia (tem zero caracteres) ou contém apenas espaços em branco. Uma string que é null, vazia ou contém apenas espaços em branco é frequentemente considerada "em branco" ou "efetivamente vazia".
Verificar tanto null quanto strings vazias é um requisito comum. Você pode combinar essas verificações usando o operador lógico OR (||).
Vamos modificar nosso programa anterior para incluir verificações para strings null e vazias.
-
Abra o arquivo NullCheck.java no editor WebIDE.
-
Modifique o método main para incluir uma string vazia e combinar as verificações. Substitua o método main existente pelo seguinte código:
public class NullCheck {
public static void main(String[] args) {
String myString1 = "Hello";
String myString2 = null;
String myString3 = ""; // This is an empty string
String myString4 = " "; // This string contains only whitespace
System.out.println("Checking myString1:");
if (myString1 == null || myString1.isEmpty()) {
System.out.println("myString1 is null or empty");
} else {
System.out.println("myString1 is not null and not empty");
}
System.out.println("\nChecking myString2:");
if (myString2 == null || myString2.isEmpty()) {
System.out.println("myString2 is null or empty");
} else {
System.out.println("myString2 is not null and not empty");
}
System.out.println("\nChecking myString3:");
if (myString3 == null || myString3.isEmpty()) {
System.out.println("myString3 is null or empty");
} else {
System.out.println("myString3 is not null and not empty");
}
System.out.println("\nChecking myString4:");
// Note: isEmpty() does not check for whitespace
if (myString4 == null || myString4.isEmpty()) {
System.out.println("myString4 is null or empty");
} else {
System.out.println("myString4 is not null and not empty");
}
}
}
Neste código atualizado:
- Adicionamos
myString4, que contém apenas espaços em branco.
- Usamos a condição
myString == null || myString.isEmpty() para verificar se uma string é null ou vazia. O método isEmpty() é um método String embutido que retorna true se a string tiver um comprimento de 0.
- Importante: O método
isEmpty() só pode ser chamado em uma string não nula. Se você tentar chamar isEmpty() em uma string null, você obterá um NullPointerException. Portanto, é crucial verificar null primeiro usando myString == null antes de chamar myString.isEmpty(). O operador lógico OR (||) é "short-circuiting", o que significa que se a primeira condição (myString == null) for verdadeira, a segunda condição (myString.isEmpty()) não é avaliada, prevenindo o NullPointerException.
-
Salve o arquivo NullCheck.java.
-
Compile o programa modificado no Terminal:
javac NullCheck.java
-
Execute o programa compilado:
java NullCheck
Você deve ver uma saída semelhante a esta:
Checking myString1:
myString1 is not null and not empty
Checking myString2:
myString2 is null or empty
Checking myString3:
myString3 is null or empty
Checking myString4:
myString4 is not null and not empty
Observe que myString4 (que contém apenas espaços em branco) é considerado "not null and not empty" por esta verificação. Se você também precisar considerar strings com apenas espaços em branco como "em branco", você pode usar o método isBlank() (disponível desde Java 11).
Vamos atualizar rapidamente o código para usar isBlank() para myString4:
-
Modifique a verificação para myString4 em NullCheck.java:
// ... (previous code) ...
System.out.println("\nChecking myString4 with isBlank():");
if (myString4 == null || myString4.isBlank()) {
System.out.println("myString4 is null or blank");
} else {
System.out.println("myString4 is not null and not blank");
}
}
}
-
Salve o arquivo, compile e execute novamente:
javac NullCheck.java
java NullCheck
A saída para myString4 agora deve ser:
Checking myString4 with isBlank():
myString4 is null or blank
Isso demonstra como combinar verificações para strings null e vazias/em branco, que é um padrão muito comum na programação Java.