Anbei ein paar simple BestPractices zum verknüpfen und verbinden. Mit Sicherheit weder vollständig noch alternativlos, aber ein kleiner Einblick.
Das erste größer Programmier-Projekt steht an, und plötzlich funktionieren lieb gewonnene Vorgehensweisen nicht mehr.
Ein gern gemachter Fehler, der in Foren gern publikumswirksam zerrissen aber nicht erklärt wird, ist die Stringverknüpfung.
Ich möchte 2 Vorgehensweisen einmal ein wenig genauer vorstellen, die bei den ersten Schritten aber auch später immer noch sehr hilfreich sind.
String.format()
Häufig findet man sogar in Einsteiger-Tutorials Beispiele folgender Art:
String string1 = "Hallo"; String string2 = "Welt"; String ergebnis = string1 + " " + string2;
Das ist natürlich syntaktisch völlig richtig, wird aber bei größeren Aufgaben schnell unleserlich, und fehlerträchtig.
Viel besser kann hier die String-Format()-Methode verwendet werden, die es sowohl in Java als auch in der .NET-Welt gibt.
C#: String ergebnis = String.Format("{0} {1}", string1, string2); Java: String ergebnis = String.Format("{%s %s", string1, string2);
In diesem simplen Beispiel mag das eher komplizierter aussehen, schon bei etwas größeren Aufgaben hat man einen imensen Gewinn an Überisicht. Vor allem weil die Funktion automatisch jeweils die toString()-Methode des entsprechenden Objekts verwendet.
So wird aus:
String ausgabe = "Hallo " + user.anrede.toString() + " " + user.nachname + ", sie waren zu letzt angemeldet am " + user.lastLoginTime.toString() + ";
ein entspanntes, und leicht zu lesendes:
String ausgabe = String.Format("Hallo {0} {1} , sie waren zu letzt angemeldet am {2}", user.anrede, user.nachname, user.lastLoginTime);
StringBuilder

Schneller ist der StringBuilder auch noch
Eine extrem wichtige, von Anfängern aber gern ignorierte Klasse ist der StringBuilder, des es ebenfalls in Java als auch in .NET gibt. Er sammelt Strings, und andere „strintgbare“ Daten und die vor allen Dingen sehr speichereffizient.
Angenommen wir haben einen längeren Text, den wir in unserem Programm benötigen. Diesen schreiben wir der Übersicht halber untereinander. Anfängern wählen dann gern folgende Methode:
String kinderlied = "Hänsel und Gretel verliefen sich im Wald."; kinderlied += "Es war so finster und auch so bitter kalt."; kinderlied += "Sie kamen an ein Häuschen von Pfefferkuchen fein."; [...] kinderlied += "Die Hexe musste braten, die Kinder geh´n nach Haus."; kinderlied += "Nun ist das Märchen von Hans und Gretel aus.";
Das funktioniert natürlich, hat aber einen entscheidenden Nachteil.
Bei jeder Verknüpfung wird intern ein neuer String im Speicher abgelegt. Für das obige Beispiel heisst das:
Im ersten Schritt ist ein String im Speicher:
„Hänsel und Gretel verliefen sich im Wald.“
Im zweiten Schritt bereits 2:
„Hänsel und Gretel verliefen sich im Wald.“
„Hänsel und Gretel verliefen sich im Wald.Es war so finster und auch so bitter kalt.“
usw.
Das mag bei diesem Kinderlied mit seinen paar Zeilen kein Problem sein, wird aber zu einem Problem, sobald z.B. eine Datei eingelesen wird, und deren mehrere hundert Zeilen in einem String benötigt werden.
Die bessere Alternative ist hier der StringBuilder, dieser belegt den Speicher nur mit den entsprechenden Daten, und wäre folgendermaßen zu verwenden:
StringBuilder kinderliedStringBuilder = new StringBuilder(); kinderliedStringBuilder.append("Hänsel und Gretel verliefen sich im Wald."); kinderliedStringBuilder.append("Es war so finster und auch so bitter kalt."); kinderliedStringBuilder.append("Sie kamen an ein Häuschen von Pfefferkuchen fein."); [...]
Falls man daraus wieder einen String machen möchte, erhält man diesen einfach per .toString-Methode.
Neueste Kommentare