Sou iniciante em java mas me ensinaram que para comparar String deve sempre usar .equals como no seu exemplo if (minhaStr.equals(“Olá!”))
J
JavaTecoPJ
Pelo seguinte:
Quando vc utiliza desta forma:
if(minhaStr=="Olá!")
Vc esta comparando a referência do Objeto minhaStr com a String “Olá!” e não o conteúdo, que vamos supor que fosse “Olá!”. Desta forma retornaria false.
Agora quando vc faz:
if(minhaStr.equals("Olá!"))
Vc esta comparando o conteúdo do Objeto minhaStr (que é “Olá!”) com a String “Olá!”, sendo que agora te retornaria verdadeiro.
J
JoaoPauloPJ
Fala cara…
Seguinte, quando você faz comparação usando ‘==’ você está perguntando se aquelas duas referências apontam para mesma área de memória, quando muitos pensam que serve pra verificar igualdade de conteúdo:
Pq funciona para tipos primitivos? Pq um tipo primitivo de determinado valor é armazenado em apenas um área da memória que pode ter várias referências apontando para ela.
Pq não funciona para objetos? Pq você pode muito bem ter dois objetos de mesmo “conteúdo” (estado) mas em diferentes áreas da memória, por isso o ‘==’ vai dá false. Algumas vezes dá true pq vc passou em algum momento do código a referência para aquela área da memória no outro objeto q se está comparando.
Moral da história:
[list]
Para tipos primitivos use ‘==’
Para objetos use .equals() (repare que este método é da classe Object)
[/list]
J
JoaoPauloPJ
Xii JavaTeco… parece que estávamos digitando ao mesmo tempo
hehehe
J
JavaTecoPJ
“JoaoPaulo”:
Xii JavaTeco… parece que estávamos digitando ao mesmo tempo
hehehe