StringBuffer 和 StringBuilder 中的警告 [英] Warning in StringBuffer and StringBuilder

查看:32
本文介绍了StringBuffer 和 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆