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.