29.10.2008
Strings – Erstens kommt es anders….
Als Java Programmierer der ersten Stunde hat man bestimmte Dinge schon früh gelernt. Zum Beispiel der Vorteil eines StringBuffer. Von daher war mir auch ziemlich schnell klar wie folgende Frage zu beantworten war:
Welche Methode ist schneller?
a)
String a = "Das" + " " + "ist" + "das" + " " + "Haus" + " " + "des" + " " + "Nikolaus";
b)
StringBuffer b = new StringBuffer().append("Das").append(" ").append("ist")
.append("das").append(" ").append("Haus")
.append(" ").append("des").append(" ")
.append("Nikolaus");
Klar Methode b) ist schneller. Zwar lässt sich Code mit einem StringBuffer etwas scherer lesen, aber es werden nicht laufend neue String Objekte erzeugt
Klingt einleuchtend ist aber vollkommener Blödsinn. String Verkettungen mit dem ‘+’ Operator wandelt der Java Compiler seit Java 1.1 bis 1.4 automatisch in StringBuffer Objekte um. Sprich der code a) und b) ergiebt identischen Bytecode. Ab Java 5 dreht sich die ganze Sachen dann sogar um, hier hat Sun die Klasse StringBuilder eingeführt. Diese ist um einiges schneller als der alte StringBuffer, was dazu führt das a) deutlich schneller ist als b).