Java é uma linguagem de programação orientada a objetos. Por ser uma linguagem de programação orientada a objetos, todos os métodos e mecanismos giram em torno dos objetos. Um conceito baseado em objeto é mutável e imutável em Java . Objetos em Java são mutáveis ou imutáveis; depende de como o objeto pode ser iterado.
Nesta seção, discutiremos objetos mutáveis e imutáveis em Java. Além disso, veremos a diferença entre eles.
O que são objetos mutáveis
Os objetos mutáveis são objetos cujo valor pode ser alterado após a inicialização. Podemos alterar os valores do objeto, como campo e estados, após a criação do objeto. Por exemplo, java.util.Date , StringBuilder , StringBuffer , etc.
Quando fazemos uma alteração em objetos mutáveis existentes, nenhum novo objeto será criado; em vez disso, alterará o valor do objeto existente. As classes desses objetos fornecem métodos para fazer alterações nele.
Os Getters e Setters (métodos get() e set()) estão disponíveis em objetos mutáveis. O objeto Mutable pode ou não ser thread-safe.
Fundamentos de construção do Ubuntu
O que são objetos imutáveis
Os objetos imutáveis são objetos cujo valor não pode ser alterado após a inicialização. Não podemos mudar nada depois que o objeto for criado. Por exemplo, objetos primitivos como int , longo , flutuador , dobro , todas as classes legadas, Classe de wrapper , Classe de cordas , etc.
Em suma, imutável significa não modificado ou imutável. Depois que os objetos imutáveis são criados, seus valores e estado de objeto não podem ser alterados.
Apenas Getters (método get()) estão disponíveis e não Setters (método set()) para objetos imutáveis.
para loop java
Vamos ver como criar classes para objetos mutáveis e imutáveis.
Como criar uma classe mutável
As duas coisas a seguir são essenciais para criar uma classe mutável:
- Métodos para modificar os valores dos campos
- Getters e Setters dos objetos
Considere o exemplo abaixo da classe mutável:
public class JtpExample { private String s; JtpExample(String s) { this.s = s; } public String getName() { return s; } public void setName(String coursename) { this.s = coursename; } public static void main(String[] args) { JtpExample obj = new JtpExample('JavaTpoint'); System.out.println(obj.getName()); // Here, we can update the name using the setName method. obj.setName('Java Training'); System.out.println(obj.getName()); } }
Saída:
JavaTpoint Java Training
No exemplo acima, estamos alterando o valor do nome usando o método setName.
Como criar uma classe imutável
As seguintes coisas são essenciais para criar uma classe imutável:
- Classe final, que é declarada como final para que não possa ser estendida.
- Todos os campos devem ser privados para que o acesso direto aos campos seja bloqueado.
- Sem levantadores
- Todos os campos mutáveis devem ser finais para que não possam ser iterados depois de inicializados.
Considere o exemplo abaixo:
menu suspenso javascript
public class JtpExample1 { private final String s; JtpExample1(final String s) { this.s = s; } public final String getName() { return s; } public static void main(String[] args) { JtpExample obj = new JtpExample('Core Java Training'); System.out.println(obj.getName()); } }
Saída:
Core Java Training
Portanto, discutimos os objetos e classes mutáveis e imutáveis. Vamos discutir as diferenças entre eles:
Diferença entre objetos mutáveis e imutáveis
A seguir estão algumas diferenças importantes entre objetos mutáveis e imutáveis em Java :
- Os objetos mutáveis podem ser alterados para qualquer valor ou estado sem adicionar um novo objeto. Considerando que os objetos imutáveis não podem ter seu valor ou estado alterado depois de criados. No caso de objetos imutáveis, sempre que alterarmos o estado do objeto, um novo objeto será criado.
- Objetos mutáveis fornecem um método para alterar o conteúdo do objeto. Comparativamente, os objetos imutáveis não fornecem nenhum método para alterar os valores.
- Os objetos mutáveis suportam setters e getters. Comparativamente, os objetos imutáveis suportam apenas setters, não getters.
- Os objetos mutáveis podem ou não ser thread-safe, mas os objetos imutáveis são thread-safe por padrão.
- Os exemplos de classes mutáveis são StringBuffer, Java.util.Date, StringBuilder, etc. Enquanto os objetos imutáveis são classes legadas, classes wrapper, classe String, etc.
Considere a tabela abaixo:
Mutável | Imutável |
---|---|
Podemos alterar o valor de objetos mutáveis após a inicialização. | Uma vez que um objeto imutável é iniciado; Não podemos alterar seus valores. |
O estado pode ser alterado. | O estado não pode ser alterado. |
Em objetos mutáveis, nenhum novo objeto é formado. | Em objetos imutáveis, um novo objeto é formado quando o valor do objeto é alterado. |
Ele fornece métodos para alterar o objeto. | Ele não fornece nenhum método para alterar o valor do objeto. |
Ele suporta os métodos get() e set() para delatar o objeto. | Ele suporta apenas o método get() para passar o valor do objeto. |
Classes mutáveis podem ou não ser seguras para threads. | Classes imutáveis são thread-safe. |
O essencial para criar uma classe mutável são métodos para modificar campos, getters e setters. | Os fundamentos para criar uma classe imutável são classe final, campos privados e objetos mutáveis finais. |
Por que Strings em Java são imutáveis
String em Java é uma classe muito especial, pois é usada em quase todos os programas Java. É por isso que é Imutável para melhorar o desempenho e a segurança. Vamos entender isso em detalhes:
Em Java, strings usam o conceito de literais. Suponha que temos um objeto com muitas variáveis de referência. Nesse cenário, se alterarmos o valor de uma variável de referência, isso afetará todo o objeto e todos os seus valores.
Além dos motivos acima, os seguintes motivos também são responsáveis por tornar a String imutável:
Objetos imutáveis são muito simples; não há necessidade de sincronização e são inerentemente seguros para threads. Porém, objetos imutáveis são bons blocos de construção para outros objetos, por isso temos que prestar-lhes cuidados especiais.
A maioria dos desenvolvedores faz da String o objeto final para que não possa ser alterado posteriormente.
encontrar números bloqueados no Android
Conclusão
Discutimos objetos mutáveis e imutáveis em Java, agora temos uma compreensão clara de objetos e classes mutáveis e imutáveis. Além disso, vimos como criar uma classe mutável e imutável.
Observa-se que objetos imutáveis podem ter seu valor e estado alterados uma vez iniciados e podem ou não ser thread-safe. Comparativamente, os objetos imutáveis não podem ser alterados para seu estado e valor e são thread-safe padrão.