Java StringBuffer和StringBuilder中的警告
我有一个初始化的StringBuffer,外部为循环,内部为循环,我连接了一些字符串 我收到了警告 “StringBuffer StringBuffer”可以声明为“StringBuilder” 及 字符串串接作为“stringbuilder.append()”调用的参数 然后我将该StringBuffer更改为StringBuilder,因为它比StringBuffer更快。现在我得到的警告如下 字符串串接作为“stringbuilder.append()”调用的参数 示例代码:Java StringBuffer和StringBuilder中的警告,java,android,stringbuilder,string-concatenation,stringbuffer,Java,Android,Stringbuilder,String Concatenation,Stringbuffer,我有一个初始化的StringBuffer,外部为循环,内部为循环,我连接了一些字符串 我收到了警告 “StringBuffer StringBuffer”可以声明为“StringBuilder” 及 字符串串接作为“stringbuilder.append()”调用的参数 然后我将该StringBuffer更改为StringBuilder,因为它比StringBuffer更快。现在我得到的警告如下 字符串串接作为“stringbuilder.append()”调用的参数 示例代码: public
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
public static String stringConcat(String[] words) {
StringBuilder stringBuilder = new StringBuilder();
for (String word : words) {
stringBuilder.append(word).append(" ");
}
return stringBuilder.toString();
}
关键是:您仍然在使用+运算符来处理表达式中的字符串,您给
append()
:
这否定了使用StringBuilder(或StringBuffer)的全部意义
相反:只需调用append()
两次!使用缓冲区/构建器的核心思想是只使用append调用来实现所需的结果;比如:
append(word.substring(0, 1).toUpperCase()).append(word...
您肯定更喜欢
StringBuilder
而不是StringBuffer
,如果您可以使用Java 8+语言功能,我更喜欢返回Stream.of(words).collect(collector.joining(“”)代码>这正是信息所说的。不要在append()
中连接字符串。也不要发布混淆问题的示例代码。好的。谢谢@ElliottFrisch。但我仍然在stringBuffer.append(word.append(“”)中调用'stringbuilder.append()'的参数中得到了字符串连接的警告;。我无法在我的应用程序中使用Java8功能。
append(word.substring(0, 1).toUpperCase()).append(word...