Objetos imutáveis são aqueles que suas instâncias não podem ter seu estado alterado após terem sido criadas e nem mudam durante a aplicação. Exemplos de classes imutáveis se encontram de maneira abrangente nas bibliotecas nativas do Java, como na própria classe String:
Stringnome="Diogo Moreira ";System.out.println(nome);// Imprime "Diogo Moreira " com espaço;nome.trim();// Esse método "corta" espaços no fim e no começo de uma StringSystem.out.println(nome);// Imprime "Diogo Moreira " com espaço;
O exemplo de código acima parece "não funcionar", mas na verdade, funciona. O que acontece é que String é imutável, e nenhum de seus métodos pode alterar o seu estado. Ao invés disso, trim() retorna uma nova String a partir das modificações propostas pelo método.
Para que um objeto seja considerado imutável, em Java, ela deve seguir as seguintes características: