Java tem estados mutáveis ou imutáveis

De modo geral, as linguagens imperativas têm estados mutáveis, que significa atribuição por referência. Mas no Java, pelo visto não segue esta definição. Ex.:

public Double a = 1,4;

public Double b = a;

Eu consigo manipular cada um deles de modo individual (atribuição por valor), pois ele cria outro espaço na memória e atribui o valor lá, e não fazendo a referência dos dois em um único lugar na memória.

Gostaria de saber se é realmente isso… Se o Java é uma linguagem que tem seus estados imutáveis, apesar de a “definição geral” de que linguagens imperativas possuem estados imutáveis não colocar o Java como tal.

Definição que encontrei no curso e me causou a dúvida: imgbox - fast, simple image host

No seu exemplo, a e b apontam para a mesma referência na memória.

No Java apenas nos tipos primitivos a atribuição é por valor.
Nos tipos não primitivos é por referência.
Double com D maiúsculo é uma classe, não é o tipo primitivo double.

1 curtida