Pq string vc compara utilizando o método equals(). O seu código deveria ser:
jTextField1.getText() .equals( UUUF )
R
Regis_Steigleder
É 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.
B
Bani
Régis,
Leia o artigo aqui do GUJ
A classe java.lang.String. Você irá entender melhor como ela funciona e porque algumas vezes a comparação com == de Strings iguais retorna verdadeiro e outras falso.
H
Heero
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?
F
FLC
Soh fazer a negacao:
if(!jTextField1.getText().equals(""))
R
Regis_Steigleder
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…
C
cv1
“Régis Steigleder”:
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
D
Daniel_Quirino_Olive
“cv”:
“Régis Steigleder”:
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:
publicclassUser{privateStringusername;privateStringpassword;//getters e setters...publicbooleanequals(Objectother){return(this.getUsername().equals(other.getUsername()))&&(this.getPassword.equals(other.getPassword()));}}
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”.
R
Regis_Steigleder
É. Isto que o Daniel e o CV colocaram eu já havia entendido. :lol:
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 !
C
cv1
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.