Objeto inmutable

Los objetos inmutables suelen ser útiles dado que son seguros en entornos multihilo.

Si este no es el efecto deseado, puede ser difícil notificar a las otras referencias cómo responder correctamente.

Los objetos inmutables pueden ser útiles en aplicaciones multihilo ya que diferentes hilos pueden interactuar con los datos contenidos en los objetos inmutables sin preocuparse de que dichos datos vayan a ser cambiados en otros hilos.

[2]​ Esto permite forzar explícitamente ciertas invariantes sobre datos concretos en el objeto que se mantendrán sin cambios durante todo el ciclo de vida del mismo.

En otros lenguajes, sucede al contrario: en OCaml los campos de un objeto o registro son inmutables por defecto y necesitan ser declarados con la palabra clave mutable para permitir su modificación.

La inmutabilidad no implica que el objeto sea almacenado en memoria de sólo lectura.

C++ además provee inmutabilidad abstracta mediante la palabra clave mutable, que permite modificar un campo desde un método constante.

El método toLowerCase() no cambiará los datos "ABC" contenidos en la cadena caracteres, en vez de eso, se crea un nuevo objeto String el cual recibe "abc" durante su construcción y se devuelve una referencia a este desde el método toLowerCase().

Como por ejemplo: Podemos evitar que los tipos de datos primitivos (int, long, short, etc.) puedan ser re-asignados una vez definidos: Los objetos referenciados no pueden hacerse inmutables únicamente usando la palabra clave final, tan sólo previene su reasignación.

Las clases que envuelven tipos primitivos (Integer, Long, Short, Double, Float, Character, Byte, Boolean) son todas inmutables.

Para simular immutabilidad en una clase, se deben sobreescribir las características y borrado del atributo para activar excepciones: En JavaScript, algunos de los tipos integrados del lenguaje (números o cadenas de caracteres) son inmutables, pero las clases generadas por el programador son normalmente mutables.

Además, soporta varios tipos inmutables, como cadenas de caracteres o vectores, que son usados habitualmente.

Las nuevas estructuras son inmutables por defecto, a no ser que uno de sus campos o la estructura al completo sean declarados como mutables explícitamente: Este lenguaje también proporciona tablas Hash y diccionarios inmutables.

El resto de usuarios del sistema no se ven afectados por la operación, ya que aún referencian el objeto original.

En Python, Java y el framework Microsoft .NET, las cadenas de caracteres son objetos inmutables.