Wie bitte?SlaterB hat gesagt.:meine Frage 'Wozu?' bezog sich auf deinen Satz
> an kritischen Stellen nehme ich die Sache selbst mit Arrays, ByteBuffern oder StringBuildern in die Hand.
was nicht schneller als concat sein kann und gewiss nicht lesbarer
(in der Situation nur String + String, darum ging es da ja gerade)
public class StringTester
{
static int k = 50000;
public static void main(String[] args)
{
stringPlus1();
stringConcat();
stringPlus1();
stringConcat();
stringPlus1();
stringConcat();
}
private static void stringPlus1()
{
long timeStart = System.currentTimeMillis();
StringBuilder b = new StringBuilder();
for (int i = k; i > 0; i--)
{
b.append(k);
}
String s = b.toString();
System.out.println("String +1 : " + (System.currentTimeMillis() - timeStart));
}
private static void stringConcat()
{
long timeStart = System.currentTimeMillis();
String s = "";
for (int i = k; i > 0; i--)
{
s = s.concat(String.valueOf(k));
}
System.out.println("String.concat: " + (System.currentTimeMillis() - timeStart));
}
}
String +1 : 15
String.concat: 25735
String +1 : 15
String.concat: 25610
String +1 : 15
public class StringTester
{
static int k = 9000000;
static String st;
public static void main(String[] args)
{
st = "12";
stringPlus();
stringConcat();
stringConcat2();
stringPlus();
stringConcat();
stringConcat2();
st = "1234";
stringPlus();
stringConcat();
stringConcat2();
stringPlus();
stringConcat();
stringConcat2();
}
private static void stringPlus()
{
long timeStart = System.currentTimeMillis();
String s = "";
for (int i = k; i > 0; i--)
{
s = st + st + st + st + st + st;
}
System.out.println("\nString + : " + (System.currentTimeMillis() - timeStart));
}
private static void stringConcat()
{
long timeStart = System.currentTimeMillis();
String s = "";
for (int i = k; i > 0; i--)
{
s = st.concat(st).concat(st).concat(st).concat(st).concat(st);
}
System.out.println("String.concat : " + (System.currentTimeMillis() - timeStart));
}
private static void stringConcat2()
{
long timeStart = System.currentTimeMillis();
String s = "";
for (int i = k; i > 0; i--)
{
s = st.concat(st).concat(st.concat(st)).concat(st.concat(st));
}
System.out.println("String.concat2: " + (System.currentTimeMillis() - timeStart));
}
}
Ausgabe:
String + : 3766
String.concat : 5673
String.concat2: 5516
String + : 3735
String.concat : 5485
String.concat2: 5204
// ab hier > 16 Chars, schlechter für +
String + : 4689
String.concat : 6001
String.concat2: 5516
String + : 4688
String.concat : 5939
String.concat2: 5532