deixa eu ver se entendi, uma string nao altera porque toda vez que seu conteudo muda ele referencia um novo objeto na memoria e um stringbuffer alterara porque o conteudo “original” é quem muda, é isso ?
Stringbuffer
3 Respostas
exatamente! qndo vc usa um objeto String, qndo vc for modificar, na verdade vc vai estar marcando a string antiga para a coleta de lixo e criando uma nova, se vc estiver usando muita manipulacao de string em um metodo, o ideal seria usar StringBuffer q vai ficar mais rapido e precisar de menos memoria…
isso ocorre pq a classe String cria um array de char do tamanho da sua string (desconsiderando o ‘\0’ q vai indicar o fim da string), dai qndo vc for alterar, vai ter q criar outra para comportar o novo numero de caracteres, jah a classe StringBuffer, vc seta o tamanho da string, dai ela pode variar sem problemas, mas se vc tiver uma string q n vai ser muito alterada, eh melhor usar a classe String pq dai vc n vai ta ocupando mais espaco do q o necessario, dai o prog fica amis rapido…
taí, vivendo e aprendendo hauhau… naum sabia dessa
exatamente! qndo vc usa um objeto String, qndo vc for modificar, na verdade vc vai estar marcando a string antiga para a coleta de lixo e criando uma nova, se vc estiver usando muita manipulacao de string em um metodo, o ideal seria usar StringBuffer q vai ficar mais rapido e precisar de menos memoria…isso ocorre pq a classe String cria um array de char do tamanho da sua string (desconsiderando o ‘\0’ q vai indicar o fim da string), dai qndo vc for alterar, vai ter q criar outra para comportar o novo numero de caracteres, jah a classe StringBuffer, vc seta o tamanho da string, dai ela pode variar sem problemas, mas se vc tiver uma string q n vai ser muito alterada, eh melhor usar a classe String pq dai vc n vai ta ocupando mais espaco do q o necessario, dai o prog fica amis rapido…
Por isso que um objeto String é dito inalterável. Na primeira vista quem lê isso fica 8O , mas o que acontece realmente é o que vc falou…