¿Cuál es la diferencia entre mutable e inmutable en Java?



Este artículo sobre Mutable e Immutable en Java es una guía completa de las diferencias entre ellos y también analiza por qué las cadenas de Java son inmutables.

Java es uno de los más populares proporciona varios conceptos para crear aplicaciones, y uno de ellos es Mutable e inmutable en Java. Bueno, este concepto se basa en realizar cambios en los campos después de la creación del objeto y, por lo tanto, facilita la programación para . Entonces, en este artículo sobre mutable e inmutable en Java, discutiré los siguientes temas:

¿Qué es el objeto mutable?





Los objetos en los que puede cambiar los campos y estados después de que se crea el objeto se conocen como objetos mutables. Ejemplo : java.util.Date, StringBuilder, etc.

¿Qué es un objeto inmutable?



los objetos en los que no se puede cambiar nada una vez creado el objeto se conocen como objetos inmutables. Ejemplo : Objetos primitivos en caja como Integer, Long, etc.

Entonces, ahora que sabe qué es mutable e inmutable en Java, avancemos y veamos las diferencias entre los dos.

Diferencia entre objetos mutables e inmutables



Puede consultar la siguiente tabla para conocer las diferencias entre objetos mutables e inmutables en Java.

recursividad serie fibonacci en java
Mudable Inmutable
Los campos se pueden cambiar después de la creación del objetoLos campos no se pueden cambiar después de la creación del objeto
Generalmente proporciona un método para modificar el valor del campo.No tiene ningún método para modificar el valor del campo
Tiene métodos Getter y SetterTiene solo método Getter
Ejemplo: StringBuilder, java.util.DateEjemplo: cadena, objetos primitivos en caja como Integer, Long, etc.

Ahora que conoce las diferencias entre objetos mutables e inmutables, veamos cómo crear estos clases.

¿Cómo crear una clase mutable?

Para crear una clase mutable en Java, debe asegurarse de que se cumplan los siguientes requisitos:

  1. Proporcionar un método para modificar los valores del campo
  2. Método Getter y Setter

Considere el siguiente código:

paquete edureka ejemplo de clase pública {cadena privada nombre de curso ejemplo (cadena nombre de curso) {this.coursename = curso nombre} public String getName () {return nombre de curso} public void setName (String nombre de curso) {this.coursename = curso de nombre} public static void principal (String [] args) {example obj = new example ('Machine Learning') System.out.println (obj.getName ()) // actualiza el nombre, este objeto es mutable obj.setName ('Machine Learning Masters') System. out.println (obj.getName ())}}

Vería el siguiente resultado:

Salida de objeto mutable: mutable e inmutable en Java- Edureka

Entonces, ahora que sabe cómo crear una clase mutable, a continuación en este artículo, veamos cómo crear una clase inmutable.

¿Cómo crear una clase inmutable?

Para crear una clase inmutable en Java, debe asegurarse de que se cumplan los siguientes requisitos:

cómo crear una cadena aleatoria en java
  1. Una clase debe declararse como final para que no se pueda ampliar.
  2. Todos los campos deben hacerse privados para que no se permita el acceso directo.
  3. Sin métodos de setter
  4. Haga que todos los campos mutables sean finales, de modo que solo puedan asignarse una vez.
paquete edureka public class exampleimmutable {cadena final privada nombre de curso exampleimmutable (cadena final nombre de curso) {this.nombre de curso = nombre de curso} public final String getName () {return nombre de curso} public static void main (String [] args) {ejemplo obj = nuevo ejemplo ( 'Aprendizaje automático') System.out.println (obj.getName ())}}

Vería la siguiente salida:

Muy bien, ahora que conoces los objetos mutables e inmutables, déjame decirte que las cadenas son inmutables en Java. Ahora, estoy seguro de que esto podría haber planteado una pregunta sobre por qué las cadenas son inmutables en Java. Entonces, a continuación en este artículo, veamos lo mismo.

¿Por qué las cadenas son inmutables en Java?

Java usa los conceptos de . Por lo tanto, si considera un ejemplo en el que tiene muchas variables de referencia que hacen referencia a un solo objeto, incluso si una variable de referencia cambia el valor de la objeto , automáticamente todas las demás variables de referencia se verán afectadas. Además, según Java eficaz ,capítulo 4, página 73, 2a edición, las siguientes son razones para usar clases inmutables:

  • Los objetos inmutables son simples
  • Estos objetos no requieren sincronización y son inherentemente seguros para subprocesos.
  • Los objetos inmutables son buenos bloques de construcción para otros objetos

Si tengo que explicarte con un ejemplo, entonces,

Digamos que tienes una variable sampletring , que almacena la cadena ' Aprendizaje automático “. Ahora, si concatenas esta cadena con otra cadena Maestros “, luego el objeto creado para ' Aprendizaje automático ' no cambiará. En su lugar, se creará un nuevo objeto para ' Maestros de aprendizaje automático “. Consulte la siguiente imagen:

Como puede ver en la imagen de arriba, el sampletring La variable de referencia se refiere a 'Machine Learning', pero no a la otra cadena, incluso después de la creación de dos objetos. Con esto, llegamos al final de este artículo sobre Mutable e Immutable en Java. Espero que tengan claro todos y cada uno de los aspectos que he comentado anteriormente.

Ahora que ha entendido los conceptos básicos de Java, consulte la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación y certificación Java J2EE y SOA de Edureka está diseñado para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog “Mutable e inmutable en Java” y nos comunicaremos con usted lo antes posible.