Vi pelo fórum algumas recomendações de evitar de se usar String quando você precisar fazer alguma modificação nela.
Alguém saberia me explicar o porque exatamente disso ? (de evitar usar objString = "nome " + ": " por exemplo)
Quando é mais recomendado usar cada ?
Supondo que eu tenha um método que seria muito chamado com parâmetros String … Param1, Param2, Param3 e retornaria uma String com “Param1 ? Param2 : Param3”.
Seria melhor criar um StringBuffer e usar vários append nesse caso ?
Algo como:
E se ele fosse chamado só uma única vez quando o processo é executado, não teria problema em usar algo como return Param1 + “?” + Param2 + “:” + Param3; ?
Não é bem “minha função”. Como disse foi apenas um exemplo. E exatamente por ser pequeno eu espefiquei “em um caso que esse método seria chamado muitas vezes”.
Meu ponto é saber melhor as desvantagens de se usar String e vantagens do StringBuffer (ou outra classe do tipo).
O principal motivo é String são inalteraveis… Cada vez que você concatena, você na verdade está criando uma nova String,
e trocando a referência, e perdendo o valor anterior…
Não muito mais eficiente do que usar String direto, a menos que você esteja chamando isso num loop.
Também é bom lembrar que a concatenação de constantes é mais eficiente usando + do que StringBuilder. Isso pq o Java é capaz de simplesmente eliminar essa concatenação já na compilação.
Exemplo:
private static final String nome = “Vinicius”;
String x = nome + " Godoy" + " de Mendonça";
Depois de compilado vira:
String x = “Vinícius Godoy de Mendonça”;