Tengo un StringBuffer inicializado fuera del bucle y dentro del bucle estoy concatenando algunas cadenas.
estoy recibiendo la advertencia
'StringBuffer stringBuffer' puede declararse como 'StringBuilder'
y
concatenación de cadenas como argumento para la llamada 'stringbuilder.append ()'
Luego cambié StringBuffer a StringBuilder, ya que es comparativamente más rápido que StringBuffer. Ahora recibo la advertencia como
concatenación de cadenas como argumento para la llamada 'stringbuilder.append ()'
Código de muestra:
public static String stringConcat(String[] words) { StringBuffer stringBuffer = new StringBuffer(); for (String word : words) { stringBuffer.append(word).append(" "); } return stringBuffer.toString(); }Por qué estoy recibiendo estas advertencias.
Editar código real:
stringBuffer.append(word.substring(0, 1).toUpperCase() + word.substring(1).toLowerCase()).append(" ");El punto es: todavía está usando el operador + para cadenas en su expresión que le da a append() :
... word.substring(0, 1).toUpperCase() + word...Eso niega todo el sentido de usar un StringBuilder (o StringBuffer).
En su lugar: ¡simplemente llame a append() dos veces! La idea central de usar un búfer/constructor es concatenar el resultado deseado usando solo llamadas anexadas; me gusta:
append(word.substring(0, 1).toUpperCase()).append(word...Use StringBuilder en lugar de StringBuffer
public static String stringConcat(String[] words) { StringBuilder stringBuilder = new StringBuilder(); for (String word : words) { stringBuilder.append(word).append(" "); } return stringBuilder.toString(); }