String ou String Buffer? Qual
usar?
Isso vai depender do objetivo do
seu algoritmo. Quando precisamos desenvolver algum método, que precise
concatenar Strings (por exemplo), temos opções de usar a classe String ou a
StringBuffer. No momento de desenvolver o método, você deve decidir qual das
duas classes mais se adéqua ao seu algoritmo entendendo as diferenças entre
elas, é claro. Então vamos às diferenças:
Classe String: cria um objeto na
memória a cada concatenação.
Classe StringBuffer: cria
somente um objeto na memória e, a cada concatenação, usa o objeto da memória e
adiciona a nova string àquele objeto String da memória.
Logo, se você tiver um algoritmo
que precise concatenar poucas strings, use a classe String. Caso contrário, use
a StringBuffer. Abaixo alguns exemplos:
public class TesteString {
//DECLARAÇÃO DOS ATRIBUTOS COMO PÚBLICOS PARA USAR
NO EXEMPLO. NÃO É A MELHOR PRÁTICA. USE-OS COMO PRIVADOS.
public Integer id;
public String nome;
public Integer idade;
1) Exemplo de uso
da classe String, concatenando apenas 3 variáveis.
public String
toString() {
return id + " " + nome + " " + idade;
}
2) Já neste exemplo, foi usada
a classe String Buffer devido às possibilidades de filtro.
public String
monteStringSql(Integer id, String nome, Integer idade){
StringBuffer buffer = new StringBuffer();
buffer.append("SELECT * FROM ALUNO WHERE 1=1
");
if (id != null )
buffer.append(" AND id = " + id.intValue());
if (nome != null)
buffer.append(" AND nome = '" + nome + "'");
if (idade != null)
buffer.append(" AND idade = " + idade.intValue());
buffer.append(" ORDER BY nome");
return
buffer.toString();
}
3) Execução de ambos os testes:
public static void main(String[]
args) {
TesteString ts = new TesteString();
ts.id = 1;
ts.nome = "classe string";
ts.idade = 30;
System.out.println(":::: STRING
::::");
System.out.println(ts.toString());
System.out.println(":::: STRING BUFFER
::::");
System.out.println(ts.monteStringSql(null, null, null));
System.out.println(ts.monteStringSql(10,
null, null));
System.out.println(ts.monteStringSql(10, "TESTE", null));
System.out.println(ts.monteStringSql(10, "TESTE", 35));
}
}
RESULTADO:
:::: STRING ::::
1 classe string 30
:::: STRING BUFFER ::::
SELECT * FROM ALUNO WHERE 1=1 ORDER BY nome
SELECT * FROM ALUNO WHERE 1=1 AND id = 10 ORDER BY nome
SELECT * FROM ALUNO WHERE 1=1 AND id = 10 AND nome = 'TESTE' ORDER
BY nome
SELECT * FROM ALUNO WHERE 1=1 AND id
= 10 AND nome = 'TESTE' AND idade = 35 ORDER BY nome
OBSERVAÇÃO: Note que o número de atributos foi o mesmo, 3 em ambos
os exemplos, porém o objetivo dos métodos foi diferente. No uso da classe
string, apenas concatenei parâmetros da classe e, no segundo, a concatenação vai
ocorrer apenas se o parâmetro tiver valor. Esse são exemplos clássicos de uso
de ambas as classes.
Leitor, espero ter auxiliado no conhecimento dessas classes.
Um grande abraço e até a próxima!
Post enviado por:
Wallace Rodrigo do Nascimento
Desenvolvedor Java
Nenhum comentário:
Postar um comentário
Observação: somente um membro deste blog pode postar um comentário.