在循环中使用StringBuilder代替使用 "+" 来连接字符串

今天安装了阿里的IDEA代码规约插件

在这里插入图片描述

在检查时发现了这个问题,它提示我尽量使用StringBuilder代替使用 “+” 来连接字符串,去百度了以下。

String messages = "";
for (ObjectError objectError : e.getBindingResult().getAllErrors()) {
    messages += objectError.getDefaultMessage() + ",";
}

//会被编译器翻译成
for (ObjectError objectError : e.getBindingResult().getAllErrors()) {
    messages = new StringBuilder(messages).append(objectError.getDefaultMessage()).toString();
}

应该这样写

String messages = "";
StringBuilder stringBuilder= new StringBuilder(messages);
for (ObjectError objectError : e.getBindingResult().getAllErrors()) {
    stringBuilder.append(objectError.getDefaultMessage()).append(",");
}
messages = stringBuilder.toString();

上面优化后的写法,可以发现在运行时不用每次都生成新的StringBuilder对象,提高了性能。

猜你喜欢

转载自blog.csdn.net/qq_37859539/article/details/82821209