Der Leerstring


zur vorherigen Seite  
zum Inhaltsverzeichnis  
zur nächsten Seite

Antwort:

c ist mit einer Referenz
auf ein Stringobjekt initialisiert, das keine Zeichen enthält.
Das ist zweifellos ein anderer Wert als null.

Der Leerstring


Ein Stringobjekt, das keine Zeichen enthält, ist immer noch ein Objekt.
Ein solches Objekt wird manchmal 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 Ihnen passieren.
Es passiert mir noch immer.
Um sich vor zukünftigen Verwechslungen zu wappnen,
studieren Sie das Programm, Schritt für Schritt:

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.)
  }
}

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 nicht abstürzen,
wenn sie ein null bekommt.
Aber manche Methoden werden es tun.
Üblicherweise sollten Sie sicherstellen, dass Methoden die Daten bekommen, die sie erwarten.)


FRAGE 6:

Prüfen Sie den folgenden Codeschnipsel:

String alpha = "Dempster Dumpster";
alpha = null;
. . .
  1. Wo wird ein Objekt konstruiert?
  2. Was wird aus diesem Objekt?