? Os desenvolvedores de Java projetado da classe " String" como um objeto imutável . " Imutável " significa que o valor da classe não pode mudar depois o programador instancia o objeto . Enquanto parece benéfico para usar sempre um objeto String que tem um valor variável, algumas razões explicam por que este não é o caso. Cordas imutáveis prestam-se para usar em programas multi-threaded , aumentar a segurança do programa, minimizar o uso de memória, e trabalhar melhor como valores em estruturas de dados , tais como tabelas de hash . Cordas em multi-threaded Programas
programas são chamados de multi-threaded quando eles desovam que são conhecidos como "fios" que executam código simultaneamente. Quando um programa gera vários segmentos, os fios muitas vezes trabalham nas mesmas variáveis em momentos diferentes. O perigo é quando duas threads compartilharem uma variável, e um fio muda o seu valor , enquanto o segundo ainda o usa. Um mecanismo de " bloqueio " tipicamente guarda variáveis em situações de encadeamento. Com uma sequência imutável , no entanto , um segmento não está preocupado com o valor da variável.
Segurança
A imutabilidade de strings também contribui com alguns problemas de segurança. Quando um usuário insere as credenciais de login em um site , é teoricamente possível que ele mude o valor da seqüência de nome de usuário ou senha antes de passar para o sistema. Se isso acontecer, então, que o usuário pode injetar código malicioso para o sistema que ele ou ela está logando. Desde strings são imutáveis , no entanto, isso não é possível.
Minimizar uso da memória
Quando um programador cria um objeto string , que reside em um objeto fixo apontar na memória, eo nome da variável serve de " referência ". Como a referência à memória e que a memória contém são duas coisas separadas , o que significa que outros nomes de variáveis também pode referenciar o mesmo local da memória . Assim, quando são necessárias cópias de um texto, diferentes variáveis podem referenciar a mesma seqüência imutável, e uma vez que não vai mudar, não tem necessidade de criar cópias de uma mesma string.
Uso em Estruturas de Dados HashTable
hashtables são chamados de " dicionários " , porque eles usam pares de valores- chave para tornar a pesquisa da estrutura de dados mais fácil. Cordas geralmente referência a um valor (como " nome " => " Robert " ou " idade " => 25). Desde strings são imutáveis , um programador não precisa se preocupar com a palavra-chave de um valor mudando, e perder o acesso a esse valor.