Vídeo: Tutorial Java 19 - Comparando objetos 2024
Quando você começa a trabalhar com objetos em Java, você acha que pode usar == e! = comparar objetos uns com os outros. Por exemplo, um botão que você vê na tela do computador é um objeto. Você pode perguntar se o que acabou de clicar com o mouse é um botão específico na tela. Você faz isso com o operador de igualdade de Java.
se (e. GetSource () == bCopy) {clipboard. setText (que. getText ());
O grande getcha com o esquema de comparação de Java vem quando você compara duas cordas. Quando você compara duas cordas entre si, você não deseja usar o sinal duplo igual. Usando o sinal duplo igual, pergunta-se: "Essa cadeia é armazenada exatamente no mesmo lugar na memória que essa outra seqüência de caracteres? "Normalmente, não é isso que você quer perguntar.
Em vez disso, você geralmente quer perguntar: "Essa string possui os mesmos caracteres nessa mesma cadeia? "Para fazer a segunda pergunta (a questão mais apropriada), o tipo de String de Java possui um método chamado igual. (Como tudo o resto no universo conhecido, esse método é igual definido na API Java, abreviação de Interface de Programação de Aplicativos.)
O método igual compara duas strings para ver se eles possuem os mesmos caracteres neles. Para um exemplo usando o método de equals de Java, veja esta lista de códigos. (A figura mostra uma execução do programa na listagem.)
importar java estável. lang. Sistema. *; importar java. util. Scanner; classe pública CheckPassword {public static void main (String args []) {out. imprimir ("O que é a senha?"); Teclado do scanner = novo Scanner (in); String password = teclado. Próximo(); Fora. println ("Você digitou >>" + senha + "<<"); Fora. println (); se (senha == "espadarte") {out. println ("A palavra que você digitou está armazenada"); Fora. println ("no mesmo lugar que o real"); Fora. println ("senha. Você deve ser um"); Fora. println ("hacker");} else {out. println ("A palavra que você digitou não é"); Fora. println ("armazenado no mesmo local que"); Fora. println ("a senha real, mas isso é"); Fora. println ("não é grande coisa");} out. println (); se (senha. igual ("espadarte")) {out. println ("A palavra que você digitou tem"); Fora. println ("mesmos caracteres que o real"); Fora. println ("senha. Você pode usar o nosso"); Fora. println ("sistema precioso");} else {out. println ("A palavra que você digitou não"); Fora. println ("tem os mesmos caracteres que"); Fora. println ("a senha real, você não pode"); Fora. println ("use our precious system.");} teclado. fechar ();}}
Na listagem, o teclado de chamada. próximo () agarra qualquer palavra que o usuário digite no teclado do computador. O código empurra esta palavra para a variável chamada senha. Em seguida, as instruções if do programa usam duas técnicas diferentes para comparar a senha com "espadarte".
Os exemplos no livro impresso são principalmente baseados em texto, mas você pode encontrar versões mais divertidas da maioria dos exemplos no site Dummies. Estas versões mais sofisticadas possuem janelas, botões, campos de texto e outros elementos de uma interface de usuário gráfica (GUI) típica.
O mais apropriado das duas técnicas usa o método igual de Java. O método igual é engraçado porque quando você o chama, você coloca um ponto após uma string e coloca a outra seqüência entre parênteses. Mas é assim que você tem que fazer isso.
Ao chamar o método de equivalentes de Java, não importa qual string obtenha o ponto e que obtém os parênteses. Por exemplo, na listagem, você poderia ter escrito
se ("espadarte". Igual (senha))
O método funcionaria bem.
Uma chamada ao método de equivalentes de Java parece desequilibrada, mas não é. Existe uma razão por trás do aparente desequilíbrio entre o ponto e os parênteses. A idéia é que você tenha dois objetos: o objeto de senha e o objeto "peixe-espada".
Cada um desses dois objetos é de tipo String. (Entretanto, a senha é uma variável do tipo String, e "swordfish" é um literal String.) Quando você escreve a senha. iguais ("espadarte"), você está chamando um método igual que pertence ao objeto da senha. Quando você chama esse método, você está alimentando "espadarte" para o método como o parâmetro do método (trocadilhos).
Ao comparar cordas entre si, use o método equals - não o sinal duplo igual.