Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java StringBuffer和StringBuilder中的警告_Java_Android_Stringbuilder_String Concatenation_Stringbuffer - Fatal编程技术网

Java StringBuffer和StringBuilder中的警告

Java StringBuffer和StringBuilder中的警告,java,android,stringbuilder,string-concatenation,stringbuffer,Java,Android,Stringbuilder,String Concatenation,Stringbuffer,我有一个初始化的StringBuffer,外部为循环,内部为循环,我连接了一些字符串 我收到了警告 “StringBuffer StringBuffer”可以声明为“StringBuilder” 及 字符串串接作为“stringbuilder.append()”调用的参数 然后我将该StringBuffer更改为StringBuilder,因为它比StringBuffer更快。现在我得到的警告如下 字符串串接作为“stringbuilder.append()”调用的参数 示例代码: public

我有一个初始化的StringBuffer,外部为循环,内部为循环,我连接了一些字符串

我收到了警告

“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(" ");

使用
StringBuilder
而不是
StringBuffer

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

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

关键是:您仍然在使用+运算符来处理表达式中的字符串,您给
append()

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

相反:只需调用
append()
两次!使用缓冲区/构建器的核心思想是只使用append调用来实现所需的结果;比如:

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

您肯定更喜欢
StringBuilder
而不是
StringBuffer
,如果您可以使用Java 8+语言功能,我更喜欢
返回Stream.of(words).collect(collector.joining(“”)这正是信息所说的。不要在
append()
中连接字符串。也不要发布混淆问题的示例代码。好的。谢谢@ElliottFrisch。但我仍然在stringBuffer.append(word.append(“”)中调用'stringbuilder.append()'的参数中得到了字符串连接的警告;。我无法在我的应用程序中使用Java8功能。
append(word.substring(0, 1).toUpperCase()).append(word...