zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Kurz bevor das Programm endet,
wie viele Objekte gibt es    4
und wie viele Objektreferenzen gibt es?    4
Wurde irgendein Ausschuss erzeugt?    Noch nicht.

Ein temporäres Objekt verwenden

Im Beispielprogramm wurde ein Stringobjekt erzeugt und eine Referenz darauf in einer Referenzvariablen aufgehoben. Das funktioniert, ist aber etwas umständlich. Hier ist eine weitere Modifikation des Beispielprogramms:

import java.awt.*;
class PointBsp3
{

  public static void main ( String arg[] )
  {
    Point a = new Point();              // Deklaration und Konstruktion kombiniert
    Point b = new Point( 12, 45 );
    Point c = new Point( b );

    System.out.println( a.toString() ); // einen temporären String
                                        // basierend auf "a" erzeugen
  }
}

Dieses Programm erzeugt drei Point-Objekte mit den gleichen Werten wie zuvor, aber jetzt ist die Deklaration und Konstruktion eines jeden Point-Objekts zusammengefasst.

Die letzte Anweisung hat die gleiche Wirkung wie die zwei letzten Anweisungen des vorherigen Programms:

  1. Wenn die Anweisung ausgeführt wird, verweist a auf ein Objekt mit den Daten (0,0).
  2. Die toString() Methode des Objekts wird aufgerufen.
  3. Die toString() Methode erzeugt ein Stringobjekt und gibt eine Referenz darauf zurück.
  4. An dieser Stelle der Ausführung können Sie sich die Anweisung wie folgt vorstellen:
    System.out.println( Referenz auf ein Stringobjekt );
  5. Die Methode println von System.out verwendet die Referenz, um die Daten zu finden und sie auf den Bildschirm auszugeben.
  6. Die Anweisung ist ausgeführt worden; die Referenz auf das Stringobjekt wurde nirgendwo gespeichert.

Da die String-Referenz in keiner Referenzvariablen gespeichert wurde, gibt es keine Möglichkeit das Stringobjekt zu finden. Es ist Ausschuss. Das ist in Ordnung. Es wurde nur zu einem Zweck gebraucht und der Zweck wurde erfüllt.

Es ist sehr gebräuchlich Objekte auf diese Weise zu verwenden.

FRAGE 9:

Welchen Typ von Parameter (das Zeug innerhalb der Klammern) erwartet die System.out.println() Methode?