Vergleicht man Objekte in Java

Wenn Sie mit Objekten in Java anfangen zu arbeiten, finden Sie, dass Sie verwenden können, == und != Objekte miteinander zu vergleichen. Zum Beispiel kann eine Schaltfläche, die Sie auf dem Computerbildschirm zu sehen ist ein Objekt. Sie können fragen, ob das, was gerade Maus geklickt wurde auf dem Bildschirm auf eine bestimmte Schaltfläche ist. Sie tun dies mit Java Gleichheitsoperator.

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

Der große Gotcha mit Java Vergleich Schema kommt, wenn Sie zwei Strings vergleichen. Wenn Sie zwei Strings miteinander vergleichen zu können, wollen Sie nicht die doppelte Gleichheitszeichen zu verwenden. Mit dem doppelten Gleichheitszeichen fragen würde, # 147-Ist dieser String in genau der gleichen Stelle im Speicher als diese andere Zeichenfolge gespeichert? # 148- Normalerweise, das ist nicht das, was Sie fragen wollen.

Stattdessen wollen Sie in der Regel zu fragen, # 147-Hat diese Zeichenfolge die gleichen Zeichen in ihm als dem anderen String? # 148- die zweite Frage zu stellen (die geeignetere Frage) Java Schnur Typ hat eine Methode mit dem Namen entspricht. (Wie alles andere im bekannten Universum, das gleich Methode ist in der Java API definiert, die Abkürzung für Application Programming Interface).

Das gleich Methode vergleicht zwei Strings, um zu sehen, ob sie die gleichen Zeichen in ihnen haben. Ein Beispiel für die Verwendung von Java gleich Methode finden Sie diese Codeliste. (Die Abbildung zeigt einen Lauf des Programms in der Liste.)

import static java.lang.System. * - Import java.util.Scanner-public class {Checkpassword public static void main (String args []) {out.print ( "Was ist das Passwort?") -Scanner Tastatur = new Scanner ( in) -string password = keyboard.next () - out.println ( "Sie getippt >>" + Passwort + "lt; lt;") - out.println () - if (Passwort == "Schwertfisch") {out .println ( "Das Wort, das Sie gespeichert getippt") - out.println ( "an der gleichen Stelle wie die reale") - out.println ( ". Kennwort Sie müssen sein") - out.println ( "Hacker". ) -} else {out.println ( "das Wort, das Sie ist nicht getippt") - out.println ( "an der gleichen Stelle wie gespeichert") - out.println ( "das eigentliche Passwort, aber das ist") - out.println ( "keine große Sache.") -} out.println () - if (password.equals ( "Schwertfisch")) {out.println ( "das Wort, das Sie eingegeben hat den") - out.println ( "gleiche Zeichen wie die eigentliche ") - out.println (" Passwort Sie können unsere benutzen. ") - out.println (" Precious System ") -} else {out.println (". das Wort, das Sie eingegeben haben nicht ") - aus. println ( "haben die gleichen Zeichen wie") - out.println ( "das echte Passwort Sie können es nicht.") - out.println ( "unser kostbares System verwenden.") -} keyboard.close () -}}

In der Auflistung der Aufruf keyboard.next () Zupacken was Wort der Benutzer auf der Computertastatur. Der Code schiebt dieses Wort in die Variable mit dem Namen Passwort. Dann wird das Programm der ob Anweisungen verwenden zwei verschiedene Techniken zu vergleichen Passwort mit # 147-Schwertfisch # 148-.

Die Ergebnisse von == und unter Verwendung von Java's equals method.
Die Ergebnisse der mit == und mit Hilfe von Java-Methode entspricht.

Die Beispiele in der gedruckten Buches sind meist textbasiert, aber sie schicker Versionen der meisten Beispiele finden auf Dummies Webseite. Diese schicker Versionen verfügen über Fenster, Buttons, Textfelder und andere Elemente eines typischen grafische Benutzeroberfläche (GUI).

Die geeignetere der beiden Techniken verwendet Java gleich Verfahren. Das gleich Methode sieht komisch aus, weil, wenn Sie es nennen, ein Punkt nach einer Zeichenkette setzen und die andere Zeichenfolge in Klammern gesetzt. Aber das ist so, wie Sie es zu tun haben.

Im Aufruf von Java gleich Verfahren, es spielt keine Rolle, welche Saite den Punkt bekommt und was bekommt die Klammern. Zum Beispiel in der Liste, können Sie geschrieben haben,

if ( "Schwertfisch" .equals (Passwort)) 

Das Verfahren würde genauso gut funktionieren.

Ein Aufruf von Java gleich Methode sieht unausgeglichen, aber es ist nicht. Es gibt einen Grund hinter der scheinbaren Ungleichgewicht zwischen dem Punkt und den Klammern. Die Idee ist, dass Sie haben zwei Objekte: Das Passwort Objekt und die # 147-Schwertfisch # 148- Objekt.

Jede dieser beiden Objekte ist vom Typ Schnur. (Aber, Passwort ist eine Variable des Typs Schnur, und # 147-Schwertfisch # 148- ist ein Schnur wörtliche.) Wenn Sie schreiben password.equals ( "Schwertfisch"), Sie anrufen ein gleich Verfahren, die mit dem Kennwort Objekt gehört. Wenn Sie diese Methode aufrufen, Sie stillen # 147-Schwertfisch # 148- der Methode als Parameter der Methode (Wortspiel beabsichtigt).

Wenn Strings miteinander zu vergleichen, verwenden Sie die gleich Verfahren - nicht die doppelte Gleichheitszeichen.

Menü