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?
Die Länge des übergebenen Strings, plus einen.
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).