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?
Die Länge des Inputstrings, plus einen.
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.