在for循环字符串的拼接中,有很多人是这样写:
public static void main(String[] args) {
String str = "";
for (int i = 0; i <= 15000; i++) {
str="这是:" +i+ "!,";
}
System.out.println(str);
}
没有在for循环中,使用string的“+”进行拼接是无可厚非的;但是在for循环中,就不建议这样拼接了,因为是将String转化为Stringbuilder,然后调用其append方法而操作的。
在for循环中,每一次的“+”操作,其实都是new 了 StringBuilder ,而造成了多次对象创建,回收又会很消耗性能。
所以建议这样写:
public static void main(String[] args) {
StringBuilder stringBuilder = new StringBuilder();
for (int i = 0; i <= 15000; i++) {
stringBuilder.append("这是:").append(i).append("!,");
stringBuilder.delete(0,stringBuilder.length());
}
System.out.println(stringBuilder);
}
将new StringBuilder(),放在for循环外面,就有效避免了性能的消耗。
⚠️注意:
一、append的字符串不能为空,需要对append的值进行判空处理。
三目:字段的判断条件 ?true的结果:false的结果。
二、
1、代码中stringBuilder.delete(0,stringBuilder.length());
这是为了清除本次循环stringBuilder中的内容。
2、清除stringBuilder内容,有三种方式:
1、new,由回收机制回收。
2、stringBuilder的delete(0,stringBuilder.length())
3、stringBuilder的setLength(0)
结论:这三种方式的运行效率由高到低:2>3>1