public static String umkehren( String str )
  {
    String umgekehrt = new String();

    for ( int j=str.length()-1; j >= 0; j-- )
      umgekehrt += str.charAt(j);

    return umgekehrt;
  }

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

Eine gute Antwort wäre:

Die Länge des übergebenen Strings, plus einen.

Ein neues Objekt pro Zeichen

Wenn der an die Methode übergebene String "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:

umgekehrt += str.charAt(j);

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

Das ist OK für Programme, die in bescheidenen Umfang Zeichenmanipulationen vornehmen. Aber eine derartige Konstruktion so vieler Objekte wird ein Programm verlangsamen, das eine große Menge an Zeichenmanipulationen durchführt (Programme wie Textverarbeitungen, Compiler, Assemblierer, Datenbankprogramme und viele andere).

FRAGE 4:

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

Inhaltsverzeichnis