Difference between Mutable objects and Immutable objects [duplicate] Difference between Mutable objects and Immutable objects [duplicate] java java

Difference between Mutable objects and Immutable objects [duplicate]


Mutable objects have fields that can be changed, immutable objects have no fields that can be changed after the object is created.

A very simple immutable object is a object without any field. (For example a simple Comparator Implementation).

class Mutable{  private int value;  public Mutable(int value) {     this.value = value;  }  //getter and setter for value}class Immutable {  private final int value;  public Immutable(int value) {     this.value = value;  }  //only getter}


Mutable objects can have their fields changed after construction. Immutable objects cannot.

public class MutableClass { private int value; public MutableClass(int aValue) {  value = aValue; } public void setValue(int aValue) {  value = aValue; } public getValue() {  return value; }}public class ImmutableClass { private final int value; // changed the constructor to say Immutable instead of mutable public ImmutableClass (final int aValue) {  //The value is set. Now, and forever.  value = aValue; } public final getValue() {  return value; }}


Immutable objects are simply objects whose state (the object's data) cannot change after construction. Examples of immutable objects from the JDK include String and Integer.

For example:(Point is mutable and string immutable)

     Point myPoint = new Point( 0, 0 );    System.out.println( myPoint );    myPoint.setLocation( 1.0, 0.0 );    System.out.println( myPoint );    String myString = new String( "old String" );    System.out.println( myString );    myString.replaceAll( "old", "new" );    System.out.println( myString );

The output is:

java.awt.Point[0.0, 0.0]java.awt.Point[1.0, 0.0]old Stringold String