Comparando jTextField  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
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
[Email] [MSN] [ICQ]
cariocathi
JavaEvangelist
[Avatar]

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
[MSN] [ICQ]
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
[Email] [MSN] [ICQ]
Bani
JWizard
[Avatar]

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 ~
Heero
JavaChild
[Avatar]

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--
[Email] [MSN]
FLC
JavaGuru

Membro desde: 15/08/2002 15:30:08
Mensagens: 212
Localização: São Paulo
Offline

Soh fazer a negacao:

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
[Email] [MSN] [ICQ]
cv
Moderador
[Avatar]

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
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
Daniel Quirino Oliveira
Moderador
[Avatar]

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
[Email] [WWW]
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
[Email] [MSN] [ICQ]
cv
Moderador
[Avatar]

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.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team