【发布时间】:2017-08-23 19:11:49
【问题描述】:
我在 for 循环外部初始化了一个 StringBuffer,在 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(" ");
【问题讨论】:
-
您绝对应该更喜欢
StringBuilder而不是StringBuffer,如果您可以使用Java 8+ 语言功能 - 我更喜欢return Stream.of(words).collect(Collectors.joining(" ")); -
这正是消息所说的。不要在
append()中连接字符串。也不要发布混淆问题的示例代码。 -
好的。谢谢@ElliottFrisch。但我仍然收到警告,因为字符串连接作为 stringBuffer.append(word).append(""); 中的 'stringbuilder.append()' 调用的参数。我无法在我的应用程序中使用 java 8 功能。
标签: java android stringbuilder string-concatenation stringbuffer