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?