Comparação entre String´s

5 respostas
M

Pessoal, parece ridículo :oops: mas eu tenho uma dúvida no seguinte:

Porque em algum casos fazer a comparação de objetos String da seguinte forma:

if(minhaStr == Olá!)

dá certo e outras vezes é necessário fazer desta forma:

if (minhaStr.equals(Olá!))

para dar certo ?

Tem alguma explicação, é que muitas vezes preciso usar ou uma ou outra porque o resultado não “sai” certo !

Obs: Tenho a J2SDK 1.4.2 :?

Valeu Pessoal,
Maicon

5 Respostas

M

Boa Tarde Maicon…

Sou iniciante em java mas me ensinaram que para comparar String deve sempre usar .equals como no seu exemplo if (minhaStr.equals(“Olá!”))

J

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.

:wink:

J

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

Xii JavaTeco… parece que estávamos digitando ao mesmo tempo :stuck_out_tongue:
hehehe

J

“JoaoPaulo”:
Xii JavaTeco… parece que estávamos digitando ao mesmo tempo :stuck_out_tongue:
hehehe

Já é a segunda vez que isso acontece hoje comigo… :wink:

Criado 26 de maio de 2004
Ultima resposta 26 de mai. de 2004
Respostas 5
Participantes 4