StringBuffer 和 StringBuilder 中的警告

我有一个 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(" ");

答案 1

关键是:您仍在使用 + 运算符来表示表达式中提供给的字符串:append()

... word.substring(0, 1).toUpperCase() + word...

这否定了使用StringBuilder(或StringBuffer)的全部意义。

相反:只需呼叫两次!使用缓冲区/构建器的核心思想是通过仅使用追加调用来连接所需的结果;喜欢:append()

append(word.substring(0, 1).toUpperCase()).append(word...

答案 2

使用而不是StringBuilderStringBuffer

 public static String stringConcat(String[] words) {
    StringBuilder stringBuilder = new StringBuilder();

    for (String word : words) {
        stringBuilder.append(word).append(" ");
    }
    return stringBuilder.toString();
  }

推荐