new StringBuilder().append("string1").append("string2").toString()Dieses Programm verkettet zwei Strings:
public class Concatenation_string {Laufzeit:
public static void main(String[] args) {
String s1 = "string1";
Zeichenkette s2 = "Zeichenfolge2";
Zeichenkette s1s2 = concatenation_strings_java(s1, s2);
System.out.println(s1s2);
}
public static String concatenation_strings_java (String s1, String s2) {
return s1+s2;
}
}
string1chain2
public String concat(String s)Example:
public class Concatenation_string {Laufzeit:
public static void main(String[] args) {< br /> String s = "Ich bin einer";
s = s.concat(" programmierer");
System.out.println(s);
}
}
Ich bin Programmierer
a+=bZunächst gibt es einen kleinen Unterschied in der Semantik. Wenn a null, dann a.concat(b) löst eine NullPointerException, aber die '+' in der Anweisung a+=b verarbeitet den Wert von a auch wenn es null. Darüber hinaus kann die Methode concat() akzeptiert nur String-Werte, während der '+'-Operator den Wert mit dem toString() ). Wir können sagen, dass die Methode concat() ist strenger, da es akzeptiert.
a.concat(b)
public static void main(String[] args) {Sie sollten dies zur Laufzeit haben:
String s = null;
s = s.concat(" programmierer");
System.out.println(s);
}
Ausnahme im Thread "main" java.lang.NullPointerExceptionDas gleiche Beispiel mit dem Operator '+':
at Concatenation_string.main(Concatenation_string.java:5)
public static void main(String[] args) {Sie sollten folgendes Ergebnis haben:
String s = null;
s = s + Programmierer;
System.out.println(s);
}
nullprogrammerWie bereits erwähnt, ist der Operator '+' ist äquivalent zu:
a = new StringBuilder()
.append(a)
.append(b)
.toString();
String result = new StringBuilder(15).append(name).append(" ").append(firstname).toString();Sie können sehen, wie einfach es ist, mehrere Strings mit StringBuilder zu verketten. Denken Sie jedoch daran, StringBuilder mit einer Kapazität zu initialisieren, die der Anzahl der Zeichen in der letzten Zeichenfolge entspricht. Dies verhindert, dass unbrauchbarer Speicher verloren geht, indem unser String ordnungsgemäß initialisiert wird, und reduziert die CPU-Zeit.
public static void main(String[] args) {Output:
String court ="Court of";
Zeichenfolge module_math ="math";
/* StringBuilder */
String module_res = "networks";
int length = court.length()+module_math.length();
StringBuilder sb = new StringBuilder(length);
sb.append(court).append(module_math);
String res = sb.toString();
System.out.println(res);
/* StringBuilder */
length = court.length()+module_math.length();
StringBuffer sBuffer = new StringBuffer(length);
sb.append(" und").append(court).append(module_res);
res = sb.toString();
System.out.println(res);
}
Math Courtyard
Math Courtyard and Network Courtyard
public static void main(String[] args) {Ergebnisse für 10000 Verkettungsoperationen:
int nb_op=10000;
Zeichenfolge s="";
double t1,t2,time;
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s += "*";
t2 = System.currentTimeMillis();
Zeit = t2-t1;
System.out.println("+: "+Zeit);
s="";
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s.concat("*");
t2 = System.currentTimeMillis();
Zeit = t2-t1;
System.out.println("concat: "+time);
StringBuilder sb=new StringBuilder();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sb.append("*");
t2 = System.currentTimeMillis();
Zeit = t2-t1;
System.out.println("StringBuilder: "+time);
StringBuffer sBuffer=new StringBuffer();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sBuffer.append("*");
t2 = System.currentTimeMillis();
Zeit = t2-t1;
System.out.println("StringBuffer: "+time);
}
+: 180.0
concat: 13.0
StringBuilder: 2.0
StringBuffer: 4.0
![]() |
Zeit in Millisekunden für 10000 Operationen |
Please disable your ad blocker and refresh the window to use this website.