Ich weiß, es ist sicher ein ganz simpler Fehler, aber es kommt eben genau nichts "raus", also einfach nur "Ausgabe: ". Wieso? Was habe ich falsch gemacht bzw. falsch verstanden?
ad 1: Stimmt, dankeschön (das ich mich daran noch nicht gewöhnt habe :? )!
ad 2: Danke auch für den Hinweis. Soweit ich das aus der Doku (und dem Wörterbuch ) rauslesen konnte:
concat() ist eher dafür gedacht zu verknüpfen, append() "anzupappen". Der Unterschied zwischen String und StringBuffer ist der, daß wenn ich zB zwei Strings per concat() verknüpfe ein dritter entsteht, (einer der beiden) ursprünglichen Strings jedoch nicht geändert wird. Das ist bei einem StringBuffer nicht so, dieser kann wirklich geändert werden -> füge ich etwas per append() hinzu, wird der eine String geändert, es wird kein neuer erzeugt - korrekt?
Meine Methode sieht jetzt so aus:
Code:
public static String printLine( int anzahl ){
StringBuffer line = new StringBuffer();
for( int i = 0; i <= anzahl; i++ ){
line = line.append( "-" );
}
return line.toString();
}
Ich dachte mir eine Konvertierung des StringBuffers in einen String, sodaß die Methode einen String zurückgibt, ist schöner - liege ich da richtig?
concat() ist eher dafür gedacht zu verknüpfen, append() "anzupappen". Der Unterschied zwischen String und StringBuffer ist der, daß wenn ich zB zwei Strings per concat() verknüpfe ein dritter entsteht, (einer der beiden) ursprünglichen Strings jedoch nicht geändert wird. Das ist bei einem StringBuffer nicht so, dieser kann wirklich geändert werden -> füge ich etwas per append() hinzu, wird der eine String geändert, es wird kein neuer erzeugt - korrekt?
Ich schätze mal intern wird das mit concat so (ähnlich) geregelt wie bei der Verkettung von Strings mit +. Es entstehen neue Strings, da Strings an sich ja immutable (unveränderlich) sind.
Der Einsatz von StringBuffer ist somit effizienter, da nicht immer neue Strings erzeugt werden.
Ich dachte mir eine Konvertierung des StringBuffers in einen String, sodaß die Methode einen String zurückgibt, ist schöner - liege ich da richtig?
public static String printLine( int anzahl ){
StringBuffer line = new StringBuffer();
for( int i = 0; i <= anzahl; i++ ){
line = line.append( "-" );
}
return line.toString();
}
thx für den Hinweis Stefan, JETZT funktioniert das so wie oben ursprünglich gedacht mit dem .append()
mic_checker: stimmt auch wieder es sollte aber auf jeden fall resourcenschonender sein mit strinbuffer bei sowas zu agieren als mit strings oder? da werden ja sonst ne menge strings für den hugo erzeugt.... klar, in dem beispiel nicht relevant, aber in echten applikationen könnte es mal performance kosten