c
ist mit einer Referenz
auf ein Stringobjekt initialisiert, das keine Zeichen enthält.
Das ist zweifellos ein anderer Wert als null
.
class NullDemo1 { public static void main (String[] arg) { String a = "Zufaellige Notizen"; // 1. Ein Objekt wird erzeugt; // die Variable a verweist darauf. String b = null; // 2. Die Variable b verweist // auf kein Objekt. String c = ""; // 3. Ein Objekt wird erzeugt // (es enthält keine Zeichen); // die Variable c verweist darauf. if ( a != null ) // 4. ( a != null ) ist true, also System.out.println( a ); // 5. wird println( a ) ausgeführt. if ( b != null ) // 6. ( b != null ) ist false, also System.out.println( b ); // 7. wird println( b ) ausgelassen. if ( c != null ) // 8. ( c != null ) ist true, also System.out.println( c ); // 9. wird println( c ) ausgeführt. // (Aber es gibt keine Zeichen zum Ausgeben.) } }
Ein Stringobjekt, das keine Zeichen enthält, ist immer noch ein Objekt. Ein solches Objekt wird Leerstring genannt. Das ist in etwa damit vergleichbar ob man ein leeres Blatt Papier hat oder ob man überhaupt kein Papier hat. Das Übersehen dieses Unterschieds ist eine der klassischen Verwechslungen in der Programmierung. Es wird Euch passieren. Um uns vor zukünftigen Verwechslungen zu wappnen, studieren wir das Programm, Schritt für Schritt:
Die System.out.println()
Methode erwartet als Parameter eine Referenz auf ein Stringobjekt.
Das Beispielprogramm überprüft, ob jede Variable eine Stringreferenz enthält
bevor es die println()
Methode mit ihr aufruft.
(Tatsächlich wird die println()
Methode, wenn sie ein null
bekommt, null
ausgeben. Aber andere Methoden werden das nicht tun und eine Ausnahme auswerfen.
Üblicherweise sollten wir sicherstellen, dass Methoden die Daten bekommen, die sie erwarten.)
Wir prüfen den folgenden Codeschnipsel:
String alpha = "Dempster Dumpster"; alpha = null; . . .