Comparando Objetos em Java

Quando você começar a trabalhar com objetos em Java, você achar que você pode usar == e != para comparar com os objetos uns aos outros. Por exemplo, um botão que você vê na tela do computador é um objeto. Você pode perguntar se a coisa que estava apenas mouse clicado é um botão específico na tela. Você pode fazer isso com o operador de igualdade de Java.

if (e.getSource () == bcopy) {Clipboard.SetText (which.getText ()) -

A grande pegadinha com esquema de comparação de Java vem quando você comparar duas cordas. Quando você compara duas cadeias de uns com os outros, você não quer usar o sinal de igual duplo. Usando o sinal de igual duplo pediria, # 147 É este cadeia armazenada em exatamente no mesmo lugar na memória como aquela outra corda? # 148- Normalmente, não é isso que você quer perguntar.

Em vez disso, você geralmente deseja perguntar, Nº 147-A esta cadeia tem os mesmos personagens nele como aquela outra corda? # 148- Para pedir a segunda pergunta (a pergunta mais apropriada) Java da Corda tipo tem um método chamado é igual a. (Como tudo no universo conhecido, este é igual a método é definido na API do Java, abreviação de Application Programming Interface).

o é igual a método compara duas cordas para ver se eles têm os mesmos personagens neles. Para um exemplo usando Java da é igual a método, consulte esta lista de códigos. (A figura mostra uma execução do programa na lista.)

importação java.lang.System estática. * - import classe java.util.Scanner-pública CheckPassword {void main (args String []) public static {out.print ( "Qual é a senha?") -Especificações do Scanner Teclado = new Scanner ( in) -String password = keyboard.next () - out.println ( "Você digitou >>" + senha + "lt; lt;") - out.println () - se (password == "peixe-espada") {fora .println ( "a palavra digitada é armazenada") - out.println ( "no mesmo lugar que o real") - out.println ( ". senha você deve ser a") - out.println ( "hacker". ) -} else {out.println ( "a palavra que você digitou não é") - out.println ( "armazenados no mesmo lugar como") - out.println ( "a senha real, mas que é") - out.println ( "não é grande coisa.") -} out.println () - if (password.equals ( "peixe-espada")) {out.println ( "a palavra que você digitou tem a") - out.println ( "mesmos caracteres que o real ") - out.println (" password você pode usar o nosso. ") - out.println (" precioso sistema ") -} else {out.println (". a palavra digitada não ") - out. println ( "têm os mesmos caracteres como") - out.println ( "a senha real Você não pode.") - out.println ( "utilizar o nosso sistema precioso.") -} keyboard.close () -}}

No perfil, a chamada keyboard.next () agarra qualquer palavra que o usuário digita no teclado do computador. O código empurra esta palavra para a variável chamada senha. Em seguida, o programa E se declarações utilizar duas técnicas diferentes para comparar senha com # 147 espadarte # 148-.

Os resultados do uso == e usando Java's equals method.
Os resultados do uso == e usando Java do método é igual.

Os exemplos no livro impresso está baseada em texto, mas você pode encontrar versões mais extravagantes da maioria dos exemplos de Dummies site. Estas versões mais extravagantes têm janelas, botões, campos de texto e outros elementos de um típico Interface gráfica do usuário (GUI).

O mais apropriado das duas técnicas usa Java de é igual a método. o é igual a método parece engraçado porque quando você chamá-lo, você colocar um ponto depois de uma corda e colocar a outra seqüência entre parênteses. Mas essa é a maneira que você tem de fazê-lo.

Ao chamar Java do é igual a método, não importa que a corda fica o ponto e que recebe os parênteses. Por exemplo, na lista, você poderia ter escrito

if ( "espadarte" .equals (password)) 

O método iria funcionar tão bem.

Uma chamada para Java de é igual a método parece desequilibrada, mas não é. Há uma razão por trás da aparente desequilíbrio entre o ponto e os parênteses. A idéia é que você tem dois objetos: o senha objeto eo # 147 espadarte # 148- objeto.

Cada um destes dois objectos é do tipo Corda. (Contudo, senha é uma variável do tipo Corda, e # 147 espadarte # 148- é uma Corda literal.) Quando você escreve password.equals ( "peixe-espada"), você está chamando um é igual a método que pertence ao objecto de palavra-passe. Quando você chamar esse método, você está alimentando # 147 espadarte # 148- para o método como parâmetro do método (trocadilho intencional).

Ao comparar cadeias de uns com os outros, use o é igual a Método - e não o sinal de igual duplo.

menu