| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2003 08:22:43
|
Régis Steigleder
JavaBaby
Membro desde: 19/03/2003 15:29:38
Mensagens: 99
Localização: Porto Alegre - RS
Offline
|
Olá pessoal.
Devo estar cometendo um erro muito bobo neste trecho de código.
Por que diabos esta comparação não funciona?
Sai sempre por else ("Não funcionou").
Uso o sdk1.4.1_01.
Um abraço.
|
Régis Steigleder |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2003 09:58:57
|
cariocathi
JavaEvangelist
![[Avatar]](/images/avatar/5d616dd38211ebb5d6ec52986674b6e4.jpg)
Membro desde: 30/04/2003 15:03:47
Mensagens: 352
Localização: Rio de Janeiro
Offline
|
Pq string vc compara utilizando o método equals(). O seu código deveria ser:
jTextField1.getText() .equals( UUUF )
|
GUJ addicted |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2003 14:34:13
|
Régis Steigleder
JavaBaby
Membro desde: 19/03/2003 15:29:38
Mensagens: 99
Localização: Porto Alegre - RS
Offline
|
É isso mesmo.
Eu até tinha visto este método.
Só que eu achei que era muito esquisito.
Porque se eu fizer UUUF == "A", sendo UUUF um objeto String funciona e jTextField.getText() == "A", não funciona.
Me pareceu uma incoerencia pois o getText() retorna um String?.
Valeu.
Um abraço.
|
Régis Steigleder |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2003 15:04:52
|
Bani
JWizard
![[Avatar]](/images/avatar/6cdd60ea0045eb7a6ec44c54d29ed402.jpg)
Membro desde: 13/10/2002 23:17:37
Mensagens: 2443
Localização: São Paulo
Offline
|
Régis,
Leia o artigo aqui do GUJ [url=http://www.guj.com.br/servlet/guj?PARSE=true&MAMUTE_ACTION=br.com.guj.action.ListArticle&MAMUTE_TEMPLATE=ShowArticle&LIST_ARTICLE=single&ArticleId=3&PAGE=1]
A classe java.lang.String[/url]. Você irá entender melhor como ela funciona e porque algumas vezes a comparação com == de Strings iguais retorna verdadeiro e outras falso.
|
~ Site da Bani ~ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2003 21:35:25
|
Heero
JavaChild
![[Avatar]](/images/avatar/c88d23cc3f6dccd975c06.jpg)
Membro desde: 14/06/2003 00:20:01
Mensagens: 139
Offline
|
aproveitando a pergunta do nosso amigo.....
e se quizesse comparar a String se ela fosse diferente, por exemplo diferente de vazio???
por exemplo para comparar se igual se usa:
if (jTextField1.getText().equals(""))
e pra quando eh diferente? procurei na APi não achei nenhum metodo....
como q faz?
|
--Heero-- |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/10/2003 22:02:49
|
FLC
JavaGuru
Membro desde: 15/08/2002 15:30:08
Mensagens: 212
Localização: São Paulo
Offline
|
Soh fazer a negacao:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2003 08:27:47
|
Régis Steigleder
JavaBaby
Membro desde: 19/03/2003 15:29:38
Mensagens: 99
Localização: Porto Alegre - RS
Offline
|
Que coisa sinistra isso!
Eu não entendo nadinha de nada da JVM, mas isso me parece algo mal pensado ou um contorno em um problema estrutural...
|
Régis Steigleder |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2003 09:09:15
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Régis Steigleder wrote:Que coisa sinistra isso!
Eu não entendo nadinha de nada da JVM, mas isso me parece algo mal pensado ou um contorno em um problema estrutural... 
Nao tem nada de sinistro: quando vc usa ==, vc esta comparando duas referencias a objetos, e nao os objetos em si. Quando vc usa equals(), vc compara os objetos (ou o que quer que o programador tenha escrito no metodo equals() dele).
Sobre a negacao do equals, bom, uma aulinha qqer em um curso de logica em colegio tecnico/faculdade/SOS Computadores resolve
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2003 09:25:36
|
Daniel Quirino Oliveira
Moderador
![[Avatar]](/images/avatar/846c260d715e5b854ffad5f70a516c88.png)
Membro desde: 23/03/2003 23:57:34
Mensagens: 3299
Localização: Awawawawa (Araraquara) - SP
Offline
|
cv wrote:
Régis Steigleder wrote:Que coisa sinistra isso!
Eu não entendo nadinha de nada da JVM, mas isso me parece algo mal pensado ou um contorno em um problema estrutural... 
Nao tem nada de sinistro: quando vc usa ==, vc esta comparando duas referencias a objetos, e nao os objetos em si. Quando vc usa equals(), vc compara os objetos (ou o que quer que o programador tenha escrito no metodo equals() dele).
O que o Carlos quis dizer é que usando "==" você acaba comparando se os endereços em que os objetos estão sendo alocados são os mesmos (e isso só retorna "true" quando você compara um objeto a ele mesmo). Quando você usa o método "equals", a comparação é feita levando em conta valores que este objeto encapsula. Por exemplo:
Neste caso, o método equals só vai retornar "true" se, e somente se, o valor das strings "username" e "password" forem iguais tanto para a instância "a" quanto para a instância "b". E é isso. Lição do dia: compare primitivos usando "==" e objetos usando o método "equals".
|
Daniel Quirino Oliveira |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2003 10:09:46
|
Régis Steigleder
JavaBaby
Membro desde: 19/03/2003 15:29:38
Mensagens: 99
Localização: Porto Alegre - RS
Offline
|
É. Isto que o Daniel e o CV colocaram eu já havia entendido.
E valeu por que sempre se aprende um pouco mais.
Só que o sinistro que eu coloquei aqui era referente ao link para a "A classe java.lang.String" que a Dani postou pra mim, que obviamente fui lá pra ler.
Então é assim:
Se eu faço:
x += "A" a jvm cria nova instancia de x e eu não pedi pra instanciar x novamente só pedi pra que ele ganhasse novo valor.
É isso que eu achei sinistro, pois tá parecendo o M$Word "adivinhando" o que eu quero fazer...
E vejam, atentos colegas, que não estou dizendo que é errado, só sinistro ...
Um abraço a todos e boa semana !
|
Régis Steigleder |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/10/2003 11:09:34
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
x+="A" tambem pode ser escrito como:
new StringBuffer(x).append(a).toString();
Faz muito mais sentido, nao? A diferenca eh soh o fato de usar uma sintaxe mais concisa para uma operacao tao corriqueira. Mas nunca se esqueca de que Strings em Java sao imutaveis.
|
|
|
 |
|
|