public static String reverse( String data )
  {
    String rev = new String();

    for ( int j=data.length()-1; j >= 0; j-- )
      rev += data.charAt(j);

    return rev;
  }

Wie viele Objekte hat reverse() in diesem Beispiel konstruiert?

Eine gute Antwort könnte sein:

Die Länge des Inputstrings, plus einen.

Ein neues Objekt pro Zeichen

Wenn der Input "Hello" ist, werden sechs Strings konstruiert (inklusive des ersten, leeren Strings), da jedes Mal wenn die folgende Anweisung ausgeführt wird, ein neuer String erzeugt wird:

rev += data.charAt(j);

Während die Anweisung zu starten beginnt, verweist rev auf einen String. Der Verkettungsoperator "+" erzeugt einen neuen String mit einem weiteren Zeichen am Ende. Die neue Stringreferenz wird rev zugewiesen. (Der alte String ist jetzt Ausschuss.)

Dies ist OK für Programme, die in bescheidenem Umfang Zeichenmanipulationen vornehmen. Aber eine solche reichliche Konstruktion von Objekten wird ein Programm verlangsamen, das eine große Menge an Zeichenmanipulationen durchführt. Solche Programme sind Textverarbeitungen, Compiler, Assemblierer, Datenbankprogramme und viele andere.

FRAGE 4:

Könnte ein Array von char verwendet werden um dieses Programm zu beschleunigen?