A imutabilidade de um objeto String só é real se usamos o método de uma string nela mesmo, podendo ser mútavel se for uma atribuição a ela mesma, correto? Exemplo de código abaixo:
package br.com.bytebank.teste;
public class TesteString2 {
public static void main(String[] args) {
String nome = "ALURA";
System.out.println("teste 1: "+nome);
nome.replace("AL", "bl"); //imutavel por executar o metodo nela mesma
System.out.println("teste 2: "+nome);
nome = nome.replace("AL", "bl"); //mutavel desde que a mesma variavel receba o resultado dela altarada
System.out.println("teste 3: "+nome);
}
}
Resultado: teste 1: ALURA teste 2: ALURA teste 3: blURA