Estava fazendo uns testes e me deparei com isso, e não conseguir entender o porque.
A saída é true, false, true. Não deveria ser tudo false?
Alguém poderia me explicar o porque?
Obrigado
Eu mesmo perguntei e eu mesmo vou responder
As linhas 1 e 3 é porque strings criadas sem o operador new ficam no pool de strings, como elas tem o mesmo valor, ambas apontam para o mesmo endereço de memória. Se tivesse criado uma delas com o operador new, este estaria apontando para outro endereço e a saída seria false.
Mas a linha 2 não consegui descobrir. Porque é false?. Se alguém ai souber, ficaria muito grato.
Obrigado
ito1
esquece gente!!! Já sei… acho que é o sono
A
anon629167171 like
Motivo:
//contatenação antes da comparação, por isso é false -> "s1 == s2: A" == s2System.out.println("s1 == s2: "+s1==s2);
Ajustado:
//os parênteses indicam a precedência da execuçãoSystem.out.println("s1 == s2: "+(s1==s2))
Recomendado, utilizar equals para comparação de String.