logo

String imutável em Java

Uma String é um tipo de variável inevitável ao escrever qualquer programa aplicativo. Referências de string são usadas para armazenar vários atributos como nome de usuário, senha, etc. Em Java, Objetos string são imutáveis . Imutável significa simplesmente não modificável ou imutável.

centralizar imagem em css

Depois que o objeto String é criado, seus dados ou estado não podem ser alterados, mas um novo objeto String é criado.

Vamos tentar entender o conceito de imutabilidade pelo exemplo abaixo:

Testimmutablestring.java

 class Testimmutablestring{ public static void main(String args[]){ String s='Sachin'; s.concat(' Tendulkar');//concat() method appends the string at the end System.out.println(s);//will print Sachin because strings are immutable objects } } 
Teste agora

Saída:

 Sachin 

Agora isso pode ser entendido pelo diagrama abaixo. Aqui Sachin não é alterado, mas um novo objeto é criado com Sachin Tendulkar. É por isso que String é conhecido como imutável.

String imutável em Java

Como você pode ver na figura acima, dois objetos são criados, mas é a variável de referência ainda se refere a 'Sachin' e não a 'Sachin Tendulkar'.

Mas se o atribuirmos explicitamente à variável de referência, ele se referirá ao objeto 'Sachin Tendulkar'.

Por exemplo:

Testeimmutávelstring1.java

np.random.rand
 class Testimmutablestring1{ public static void main(String args[]){ String s='Sachin'; s=s.concat(' Tendulkar'); System.out.println(s); } } 
Teste agora

Saída:

 Sachin Tendulkar 

Nesse caso, s aponta para o 'Sachin Tendulkar'. Observe que o objeto Sachin ainda não foi modificado.

Por que os objetos String são imutáveis ​​em Java?

Como Java usa o conceito de String literal. Suponha que existam 5 variáveis ​​de referência, todas referentes a um objeto 'Sachin'. Se uma variável de referência alterar o valor do objeto, ela será afetada por todas as variáveis ​​de referência. É por isso que os objetos String são imutáveis ​​em Java.

A seguir estão alguns recursos de String que tornam os objetos String imutáveis.

1. Carregador de classe:

Um ClassLoader em Java usa um objeto String como argumento. Considere, se o objeto String for modificável, o valor poderá ser alterado e a classe que deve ser carregada poderá ser diferente.

Para evitar esse tipo de interpretação errada, String é imutável.

2. Fio seguro:

Como o objeto String é imutável, não precisamos cuidar da sincronização necessária ao compartilhar um objeto entre vários threads.

3. Segurança:

converter int em string java

Como vimos no carregamento de classes, objetos String imutáveis ​​evitam mais erros carregando a classe correta. Isso torna o programa aplicativo mais seguro. Considere um exemplo de software bancário. O nome de usuário e a senha não podem ser modificados por nenhum intruso porque os objetos String são imutáveis. Isso pode tornar o programa aplicativo mais seguro.

4. Espaço de pilha:

A imutabilidade de String ajuda a minimizar o uso da memória heap. Quando tentamos declarar um novo objeto String, a JVM verifica se o valor já existe no pool String ou não. Se existir, o mesmo valor será atribuído ao novo objeto. Este recurso permite que Java use o espaço de heap com eficiência.

Por que a classe String é final em Java?

A razão por trás da classe String ser final é porque ninguém pode substituir os métodos da classe String. Para que possa fornecer os mesmos recursos aos novos objetos String e aos antigos.