1
resposta

Qual é o fundamento da imutabilidade da String?

Porque a classe String foi criada desta forma? Qual foi a motivação?

1 resposta

Oi Silvia, tudo bem?

A String é imutável para garantir uma maior performance ao criar apenas uma única cópia de cada String na String Pool. Além de garantir a segurança de uma aplicação enquanto ela conversa com o banco de dados. Então, suponha que recebemos usernames e senhas, tudo como String, de uma fonte não muito confiável e agora precisamos checar a integridade dos dados. Nossa aplicação vai realizar as validações necessárias, mas veja que essa fonte não confiável ainda terá acesso às referencias das Strings, o que faz com que as Strings estejam suscetíveis a mudanças e SQL injections, isto é, se a String não fosse um objeto imutável.

Outro ponto onde essa imutabilidade é útil, é quando estamos lidando com programação paralela, ou seja, quando temos múltiplas threads executando métodos ao mesmo tempo e podendo comprometer a integridade dos dados sendo manipulados. Então, novamente, a natureza da String resolve esses problemas e, portanto, podemos dizer que a String é thread-safe (podemos trabalhar sem que haja conflitos entre diferentes processos que estão sendo executados ao mesmo tempo). Mais detalhes serão vistos no curso de Threads em Java.

Espero ter ajudado, se ficou qualquer dúvida é só avisar!

Bons estudos!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software