我有一个StringBuffer在for循环外部和内部for循环初始化我连接一些字符串。
我收到了警告
' StringBuffer stringBuffer'可以声明为' StringBuilder'
和
字符串连接作为' stringbuilder.append()'的参数致电
然后我将StringBuffer更改为StringBuilder,因为它比StringBuffer快。现在我收到警告
字符串连接作为' stringbuilder.append()'的参数调用
示例代码:
public static String stringConcat(String[] words) {
StringBuffer stringBuffer = new StringBuffer();
for (String word : words) {
stringBuffer.append(word).append(" ");
}
return stringBuffer.toString();
}
为什么我收到这些警告。
编辑实际代码:
stringBuffer.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase()).append(" ");
答案 0 :(得分:31)
关键是:您仍在使用+运算符表示您为append()
提供的表达式中的字符串:
... word.substring(0, 1).toUpperCase() + word...
这否定了使用StringBuilder(或StringBuffer)的全部意义。
相反:只需拨打append()
两次!使用缓冲区/构建器的核心思想是仅使用追加调用来连接所需的结果;像:
append(word.substring(0, 1).toUpperCase()).append(word...
答案 1 :(得分:6)
使用StringBuilder
代替StringBuffer
public static String stringConcat(String[] words) {
StringBuilder stringBuilder = new StringBuilder();
for (String word : words) {
stringBuilder.append(word).append(" ");
}
return stringBuilder.toString();
}