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?.
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.
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?
Eu não entendo nadinha de nada da JVM, mas isso me parece algo mal pensado ou um contorno em um problema estrutural… :([/quote]
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
Eu não entendo nadinha de nada da JVM, mas isso me parece algo mal pensado ou um contorno em um problema estrutural… :([/quote]
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).
[/quote]
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:
public class User{
private String username;
private String password;
//getters e setters...
public boolean equals(Object other){
return (this.getUsername().equals(other.getUsername())) && (this.getPassword.equals(other.getPassword()));
}
}
User a = new User();
a.setUsername("daniel");
a.setPassword("123");
User b = new User();
b.setUsername("daniel");
a.setPassword("123");
System.out.println(a.equals(b));
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”.
É. 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 …
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.