StringBuffer 和 StringBuilder 中的警告 [英] Warning in StringBuffer and StringBuilder
问题描述
我在 for 循环外和 for 循环内初始化了一个 StringBuffer 我正在连接一些字符串.
I have a StringBuffer initialized outside for loop and inside for loop I am concatenating some strings.
我收到警告
'StringBuffer stringBuffer' 可以声明为 'StringBuilder'
'StringBuffer stringBuffer' may be declared as 'StringBuilder'
和
字符串连接作为'stringbuilder.append()'调用的参数
string concatenation as argument to 'stringbuilder.append()' call
然后我将该 StringBuffer 更改为 StringBuilder,因为它比 StringBuffer 快.现在我收到警告为
Then I changed that StringBuffer to StringBuilder, since it is comparatively faster than StringBuffer. Now I am getting the warning as
字符串连接作为 'stringbuilder.append()' 调用的参数
string concatenation as argument to 'stringbuilder.append()' call
示例代码:
public static String stringConcat(String[] words) {
StringBuffer stringBuffer = new StringBuffer();
for (String word : words) {
stringBuffer.append(word).append(" ");
}
return stringBuffer.toString();
}
为什么我会收到这些警告.
Why I am getting these warnings.
编辑实际代码:
stringBuffer.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase()).append(" ");
推荐答案
重点是:你仍然在表达式中使用 + 运算符来处理你给 append()
的字符串:>
The point is : you are still using the + operator for strings in your expression that you give to append()
:
... word.substring(0, 1).toUpperCase() + word...
这否定了使用 StringBuilder(或 StringBuffer)的全部意义.
That negates the whole point of using a StringBuilder (or StringBuffer).
相反:只需调用 append()
两次!使用缓冲区/构建器的核心思想是仅使用附加调用来连接您想要的结果;喜欢:
Instead: simply call append()
twice! The core idea of using a buffer/builder is to concat your desired result by only using append calls; like:
append(word.substring(0, 1).toUpperCase()).append(word...
这篇关于StringBuffer 和 StringBuilder 中的警告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!