StringBuider
StringBuider
StringBuider工具探索
场景
在循环中拼接字符串一般有两种情况;
-
循环将对象的几个字段拼接成一个新字段,在赋值给对象;
-
在循坏外创建一个字符串对象,每次循环向该字符串拼接新的内容,循坏结束后即可得到拼接好的字符串;
(一):
/**- 循环内 String 拼接字符串,一次循环后销毁
*/
public static void useString(){
for (int i = 0; i < CYCLE_NUM_BIGGER; i++) {
String str = str1 + i + str2 + i + str3 + i + str4 ;
}
}
/**
- 循环内 使用 StringBuilder 拼接字符串,一次循环后销毁
/
public static void useStringBuilder(){
for (int i = 0; i < CYCLE_NUM_BIGGER; i++) {
StringBuilder sb = new StringBuilder();
String s = sb.append(str1).append(i).append(str2).append(i).append(str3).append(i).append(str4).toString();
}
}
(二):
/* - 多次循环拼接成一个字符串 用 String
*/
public static void useStringSpliceOneStr (){
String str = “”;
for (int i = 0; i < CYCLE_NUM_LOWER; i++) {
str += str1 + str2 + str3 + str4 + i;
}
}
/**
- 多次循环拼接成一个字符串 用 StringBuilder
*/
public static void useStringBuilderSpliceOneStr(){
StringBuilder sb = new StringBuilder();
for (int i = 0; i < CYCLE_NUM_LOWER; i++) {
sb.append(str1).append(str2).append(str3).append(str4).append(i);
}
}
- 循环内 String 拼接字符串,一次循环后销毁
结论
在循环内使用String和StringBuilder的效率是差不多的。
(原因:编译器对String的优化就是StringBuilder)
在循坏外,String虽然经过了编译器优化,但是比在循坏外多了n次的new 对象,销毁对象的操作。