new StringBuilder().append(”string1).append(”string2).toString()此程序连接两个字符串:
public class Concatenation_string {Runtime:
public static void main(String[] args) {
String s1 = string1”;
字符串 s2 = string2”;
字符串 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 {Runtime:
public static void main(String[] args) {
字符串 s = 我是一体的”;
s = s.concat(程序员”);
System.out.println(s);
}
}
我是程序员
a+=b首先,语义上有细微的差异。如果 a 是 null,则 a.concat(b) 触发 NullPointerException,但 '+' 在语句中 a+=b 处理 a即使它是 null。此外,concat() 仅接受 String 值,而 '+' 运算符使用 toString() )。我们可以说 concat() 更严格,因为它接受.
a.concat(b)
public static void main(String[] args) {你应该在运行时有这个:
String s = null;
s = s.concat(程序员”);
System.out.println(s);
}
线程 main” java.lang.NullPointerException与 '+':
at Concatenation_string.main(Concatenation_string.java:5)
public static void main(String[] args) {你应该得到这样的结果:
String s = null;
s = s + 程序员;
System.out.println(s);
}
nullprogrammer所以,正如我们之前所说,运算符 '+' 等效于:
a = new StringBuilder()
.append(a)
.append(b)
.toString();
String result = new StringBuilder(15).append(name).append( ”).append(firstname).toString();你可以看到使用 StringBuilder 连接多个字符串是多么容易。但是,请记住使用等于最终字符串中的字符数的容量初始化 StringBuilder。这将通过正确初始化我们的 String 来防止丢失不可用的内存并减少 CPU 时间。
public static void main(String[] args) {输出:
String court =Court of”;
字符串 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);
字符串 res = sb.toString();
System.out.println(res);
/* StringBuilder */
length = court.length()+module_math.length();
StringBuffer sBuffer = new StringBuffer(length);
sb.append(和”).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) {10000 个串联操作的结果:
int nb_op=10000;
字符串 s=”;
double t1,t2,time;
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s += *”;
t2 = System.currentTimeMillis();
时间 = t2-t1;
System.out.println(+: ”+时间);
s=”;
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
s.concat(*”);
t2 = System.currentTimeMillis();
时间 = t2-t1;
System.out.println(concat: ”+时间);
StringBuilder sb=new StringBuilder();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sb.append(*”);
t2 = System.currentTimeMillis();
时间 = t2-t1;
System.out.println(StringBuilder: ”+时间);
StringBuffer sBuffer=new StringBuffer();
t1= System.currentTimeMillis();
for(int i = 0 ; i < nb_op; i++)
sBuffer.append(*”);
t2 = System.currentTimeMillis();
时间 = t2-t1;
System.out.println(StringBuffer: ”+时间);
}
+: 180.0
concat: 13.0
StringBuilder: 2.0
StringBuffer: 4.0
![]() |
10000 次操作的时间(以毫秒为单位) |
Please disable your ad blocker and refresh the window to use this website.