StringBuffer 和 StringBuilder 中的警告

Warning in StringBuffer and StringBuilder

我在 for 循环外初始化了一个 StringBuffer,在 for 循环内我连接了一些字符串。

我收到警告

'StringBuffer stringBuffer' may be declared as 'StringBuilder'

string concatenation as argument to 'stringbuilder.append()' call

然后我把那个StringBuffer改成了StringBuilder,因为它比StringBuffer快。现在我收到警告

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();
}

为什么我会收到这些警告。

编辑实际代码:

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():

的表达式中对字符串使用 + 运算符
... word.substring(0, 1).toUpperCase() + word...

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

相反:只需调用 append() 两次!使用 buffer/builder 的核心思想是仅使用追加调用来连接您想要的结果;喜欢:

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