Olá!
Eu dei uma boa revisada mas mesmo assim não entendi exatamente, bom vamos lá.
public class TesteString {
public static void main(String[] args) {
//Primeira parte
String var1 = "Lucca";
var1.replace("L", "l");
System.out.println(var1);
var1.toLowerCase();
System.out.println(var1);
String var2 = var1.replace("L", "l");
System.out.println(var2);
String var3 = var1.toUpperCase();
System.out.println(var3);
// até aqui foi compreendido o conceito e praticado.
//Segunda parte
TesteString testeString = new TesteString();
System.out.println(testeString.var4);
testeString.var4.replace("R", "r");
System.out.println(testeString.var4);
testeString.var4.toUpperCase();
System.out.println(testeString.var4);
testeString.setVar4("RAFAEL");
System.out.println(testeString.var4);
}
private String var4 = "Rafael";
public void setVar4 (String var4){
this.var4 = var4;
}
}
//CONSOLE
Lucca
Lucca
lucca
LUCCA
Rafael
Rafael
Rafael
RAFAEL
Segue meu código, como o professor disse que a String é imutável eu compreendi então que chamando o método na variável var1 não funcionaria, apenas nas variaveis var2 e var3 ele consegueria alterar a String pois na verdade recebe outra String, outro objeto.
Até na segunda parte do código na variável var4 , os métodos testeString.var4.replace() e testeString.var4.toUpperCase() não funcionam foi compreendido também.
Porém então quando eu crio a instância do objeto e seto testeString.setVar4("RAFAEL"), a String mudou para RAFAEL. Nesse caso então o que ocorreu? Foi setado uma nova String no mesmo objeto ou foi criado outro? Então ela ainda é imutável? Ou o que se chama de imutavél é apenas os métodos da classe String, e não quando atribuímos nada a ele?
Obrigado pela ateção, espero ter sido claro.