Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Angenommen ich habe eine Funktion, die einen String aus einzelnen Characters aufbaut.
Als Beispiel:
Java:
public static String alphabet1(int length) {
String alphabet = "";
for (char c = 'A'; c <= 'Z' && c < 'A' + length; c++)
alphabet += c;
return alphabet;
}
Ist es dann besser, mit StringBuilder statt mit immutable Strings zu arbeiten?
Java:
public static String alphabet2(int length) {
StringBuilder alphabet = new StringBuilder(length);
for (char c = 'A'; c <= 'Z' && c < 'A' + length; c++)
alphabet.append(c);
return alphabet.toString();
}
Ist es. Es ist uneffektiv, die Stringkonkatenation in eineer Schleife zu verwenden, da hier bei jedem Durchlauf ein neuer StringBuilder angelegt werden würde. Dann kann man ihn gleich einmal selbst definieren.
Landei hat sich den Code in Deinem ersten Post rausgesucht und gedacht, dass Du das Alphabet bis zu einem bestimmten Buchstaben ausgeben willst. Dafür ist der von ihm gepostete Code eine performante Alternative zur Variante mit StringBuilder. Für dieses spezielle Problem also eine valide Lösung.
Der allgemeine Teil Deiner Frage war ja schon beantwortet
Landeis Methode hat genau dieselbe Ausgabe wie deine "alphabet" Methode, aber ist einfacher und effizienter weil die "substring" Methode äusserst effizient arbeitet. Von aussen gesehen sind alle drei "alphabet" Methoden die hier aufgelistet wurden identisch, du kannst sie also beliebig austauschen ohne dass dein Programm sich anders verhält.
Achso, okay. Dann habe ich meine Frage vielleicht nicht eindeutig genug gestellt, mein Fehler
Es ging mir nur um den Unterschied String bzw. StringBuilder.
An Landeis Code hat mich auch leicht verwundert, dass der eigentlich nichts mit meinem Beispiel zu tun hatte. Ich wollte einen String (als Beispiel das Alphabet) durch einzelne Character aufbauen und nicht den Beginn eines Strings wegschneiden. (alphabet(3) sollte "ABC" ergeben und nicht wie bei Landei "DEFGHIJKLMNOPQRSTUVWXYZ")
die Frage war genau genug, du musst einfach damit leben, dass es immer gewisse Alternativen zu beleuchten gibt,
selbst wenn sie dir persönlich nicht helfen, dann vielleicht andere die in diesen Thread schauen
LandEi's Antwort ist nicht ganze korrekt,
und daher kommt Claudia92's Verwirrung bereichtigter Weise.
Eigentlich müsste es heißen:
(diese kleine versteckte '1' ist hier WESENTLICH!! Einer der typischen Fehler, die man in komplexeren Programmen ewig sucht.)
Java:
private static final String ABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static String alphabet(int length) {
return ABC.substring(1,Math.min(length, ABC.length()));
}
Erst dann stimmt Benis Aussage.
[EDIT]... substring(0,Math.min...
muss es heißen![/EDIT]
Stimmt, ist mir auch nicht aufgefallen. Man muss natürlich die substring-Methode mit zwei Parametern benutzen. Aber ich glaube, der beginIndex muss 0 und nicht 1 sein.
Nicht der erste Index(=0), sondern die erste Stelle(=1) wird angegeben!
Sonst würde auch length() nicht funktionieren.[/STRIKE]
[EDIT]Sorry, ich war mir zu sicher, aber nillehammer hat unten recht!
Der Index wird angegeben!
Also '0'!
Danke sehr![/EDIT]
(Ich hatte es prompt verwechselt mit substring(length). Logisch dass dort '1' für 1 Zeichen stehen muss.
Sollte mich doch auch konsequenter an meine eigene Sig halten.:lol