StringBuffer和StringBuilder中的警告

时间:2017-03-30 03:36:20

标签: java android stringbuilder string-concatenation stringbuffer

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

2 个答案:

答案 0 :(得分:31)

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

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

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

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

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

答案 1 :(得分:6)

使用StringBuilder代替StringBuffer

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

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