Strigns anônimas - comparação

Bom dia galera!!!

Tipo, tenho o seguinte código…

String s1 = "MyString";
String s2 = "MyString";

s1== s2 retornará true.

Está correto isso? Uma vez que são strings anônimas e não é criado um novo objeto no heap, apenas mais uma ref para ele.

donatinho

Olá donatinho,

Quando você cria Strings com “”, a máquina virtual verifica se essa String já existe num pool de Strings que ela tem; caso exista, é retornada a mesma referência da String existente, por isso o == dá certo; caso não exista, é criada uma nova String, colocada no pool e depois retornada pra quem chamou.

Caso você queira mesmo que duas Strings “iguais” sejam de referências diferentes, é só você obter a String de outra maneira, sem ser com “”:

String s1 "MyString"; String s2 = new String("MyString");

Isso é um exemplo, existem várias outras formas de você obter uma nova String diferente.

Até mais, :wink:

Valeu pela resposta!!!