Kombinierte Prüfung auf Null und Leerheit
Im vorherigen Schritt haben wir gelernt, wie man prüft, ob eine Variable null
ist, indem man den ==
-Operator verwendet. In Java, insbesondere wenn es um String
-Objekte geht, ist es jedoch oft notwendig, nicht nur zu prüfen, ob eine Variable null
ist, sondern auch, ob sie "leer" ist. Ein leerer String ist ein String
-Objekt, das existiert, aber keine Zeichen enthält (z. B. ""
). Ein null
-String hingegen bedeutet, dass die Variable überhaupt nicht auf ein String
-Objekt verweist.
Wenn Sie versuchen, Methoden wie isEmpty()
oder length()
auf einem null
-String aufzurufen, wird eine NullPointerException
ausgelöst. Wenn Sie also null
-Strings und leere Strings gleich behandeln möchten (z. B. als "leer" oder "fehlend" betrachten), müssen Sie beide Bedingungen prüfen.
Die gebräuchlichste Methode dazu besteht darin, zunächst zu prüfen, ob der String null
ist und dann, wenn er nicht null
ist, zu prüfen, ob er leer ist, indem Sie die isEmpty()
-Methode verwenden.
Lassen Sie uns unser HelloJava.java
-Programm ändern, um die Kombination dieser Prüfungen zu demonstrieren.
-
Öffnen Sie die Datei HelloJava.java
im WebIDE-Editor.
-
Ersetzen Sie den aktuellen Code durch folgenden:
public class HelloJava {
public static void main(String[] args) {
String text1 = null;
String text2 = ""; // Ein leerer String
String text3 = "Hello"; // Ein nicht-leerer String
System.out.println("Checking text1 (null):");
if (text1 == null || text1.isEmpty()) {
System.out.println("text1 is null or empty.");
} else {
System.out.println("text1 is not null and not empty: " + text1);
}
System.out.println("\nChecking text2 (empty):");
// Es ist wichtig, zunächst auf null zu prüfen!
if (text2 == null || text2.isEmpty()) {
System.out.println("text2 is null or empty.");
} else {
System.out.println("text2 is not null and not empty: " + text2);
}
System.out.println("\nChecking text3 (not empty):");
if (text3 == null || text3.isEmpty()) {
System.out.println("text3 is null or empty.");
} else {
System.out.println("text3 is not null and not empty: " + text3);
}
}
}
In diesem aktualisierten Code:
- Wir führen drei
String
-Variablen ein: text1
(null), text2
(leer) und text3
(nicht leer).
- Wir verwenden den logischen ODER-Operator (
||
), um die null
-Prüfung (text == null
) und die Leerheitsprüfung (text.isEmpty()
) zu kombinieren.
- Die Bedingung
text == null || text.isEmpty()
ist wahr, wenn text
entweder null
ist ODER wenn text
nicht null
ist UND text.isEmpty()
wahr ist.
- Wichtig: Die
null
-Prüfung (text == null
) muss in der ||
-Bedingung zuerst stehen. Wenn text
null
ist, ist der erste Teil der ||
-Bedingung (text == null
) wahr, und Java verwendet die "Short-Circuit-Evaluation", um den zweiten Teil (text.isEmpty()
) zu überspringen, wodurch eine NullPointerException
vermieden wird. Wenn die isEmpty()
-Prüfung zuerst stünde und text
null
wäre, würde dies einen Fehler verursachen.
-
Speichern Sie die Datei (Strg+S oder Cmd+S).
-
Kompilieren Sie das Programm im Terminal:
javac HelloJava.java
-
Führen Sie das Programm aus:
java HelloJava
Sie sollten die folgende Ausgabe sehen:
Checking text1 (null):
text1 is null or empty.
Checking text2 (empty):
text2 is null or empty.
Checking text3 (not empty):
text3 is not null and not empty: Hello
Diese Ausgabe zeigt, dass unsere kombinierte Prüfung sowohl den null
-String (text1
) als auch den leeren String (text2
) korrekt als "null oder leer" identifiziert hat, während der nicht-leere String (text3
) ebenfalls korrekt identifiziert wurde.
Diese kombinierte Prüfung (string == null || string.isEmpty()
) ist ein sehr häufiges Muster in Java, wenn Sie sowohl null
- als auch leere Strings behandeln müssen. Viele Bibliotheken bieten auch Hilfsmethoden für diese Aufgabe an, wie z. B. StringUtils.isEmpty()
oder StringUtils.isBlank()
(die auch auf Leerzeichen prüft) in Apache Commons Lang, aber das Verständnis der grundlegenden kombinierten Prüfung ist von grundlegender Bedeutung.