Combinar comprobaciones de nulidad y cadenas vacías
En el paso anterior, aprendimos cómo comprobar si una cadena es null. Sin embargo, en muchos escenarios del mundo real, es posible que también necesites comprobar si una cadena está vacía (tiene cero caracteres) o contiene solo espacios en blanco. Una cadena que es null, está vacía o contiene solo espacios en blanco a menudo se considera "en blanco" o "efectivamente vacía".
Comprobar tanto si una cadena es null como si está vacía es un requisito común. Puedes combinar estas comprobaciones utilizando el operador lógico OR (||).
Vamos a modificar nuestro programa anterior para incluir comprobaciones tanto de null como de cadenas vacías.
-
Abre el archivo NullCheck.java en el editor del WebIDE.
-
Modifica el método main para incluir una cadena vacía y combinar las comprobaciones. Reemplaza el método main existente con el siguiente código:
public class NullCheck {
public static void main(String[] args) {
String myString1 = "Hello";
String myString2 = null;
String myString3 = ""; // Esta es una cadena vacía
String myString4 = " "; // Esta cadena contiene solo espacios en blanco
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:");
// Nota: isEmpty() no comprueba espacios en blanco
if (myString4 == null || myString4.isEmpty()) {
System.out.println("myString4 is null or empty");
} else {
System.out.println("myString4 is not null and not empty");
}
}
}
En este código actualizado:
- Agregamos
myString4 que contiene solo espacios en blanco.
- Usamos la condición
myString == null || myString.isEmpty() para comprobar si una cadena es null o está vacía. El método isEmpty() es un método incorporado de la clase String que devuelve true si la cadena tiene una longitud de 0.
- Importante: El método
isEmpty() solo se puede llamar en una cadena no nula. Si intentas llamar a isEmpty() en una cadena null, obtendrás una NullPointerException. Por lo tanto, es crucial comprobar si la cadena es null primero utilizando myString == null antes de llamar a myString.isEmpty(). El operador lógico OR (||) es "de cortocircuito", lo que significa que si la primera condición (myString == null) es verdadera, la segunda condición (myString.isEmpty()) no se evalúa, evitando la NullPointerException.
-
Guarda el archivo NullCheck.java.
-
Compila el programa modificado en el Terminal:
javac NullCheck.java
-
Ejecuta el programa compilado:
java NullCheck
Deberías ver una salida similar 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
Observa que myString4 (que contiene solo espacios en blanco) se considera "no nula y no vacía" por esta comprobación. Si también necesitas considerar cadenas con solo espacios en blanco como "en blanco", puedes usar el método isBlank() (disponible desde Java 11).
Vamos a actualizar rápidamente el código para usar isBlank() para myString4:
-
Modifica la comprobación para myString4 en NullCheck.java:
// ... (código anterior) ...
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");
}
}
}
-
Guarda el archivo, compila y ejecuta de nuevo:
javac NullCheck.java
java NullCheck
La salida para myString4 ahora debería ser:
Checking myString4 with isBlank():
myString4 is null or blank
Esto demuestra cómo combinar comprobaciones de null y cadenas vacías/en blanco, que es un patrón muy común en la programación Java.