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.
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.