Imutabilidade das Strings

Caso a gente comparar as duas Strings criadas acima (com "==", será false. O motivo é que a new String está alocado em outro espaço de memória.

Mas se compararmos com ".equals", será true. Pois o conteúdo é igual!

Cabe destacar, que se tiver por exemplo duas variáveis com o mesmo conteúdo e comparar com "==", será true.

Isso se chama Imutabilidade. Se a gente compartilha informação de uma variável para outra, nós não podemos mudá-la.

Se a gente muda para outra variável (como texto1 pra texto2), a gente muda também o endereço de memória do texto1. Ele passará a ser igual ao do texto2.

Esse é o "problema" do pool de strings. Ele armaneza as coisas em memória para reuso mas não permite a mutabilidade dessas Strings.

Atualizado