Java 1
  • Home
  • Tutorials
    • Hello World
      • Download
      • Installation unter Windows
      • Installation unter Linux
      • Das Hello World Programm
      • Mehr Java
    • Java Konsole
      • Java Konsole Testen
    • Basic Java
      • Java Programme
        • Die Klasse
        • Datentypen
        • Null
        • Casten
        • Operatoren
        • Kontrollstrukturen
        • Arrays
        • Aufgaben
      • Objektorientierte Konzepte
        • Hallo Fenster
        • Objekte einer Klasse
        • Vererbung
        • Interfaces
      • Alles über Klassen
        • Abstrakte Klassen
        • Methoden überschreiben
        • Super
        • Final
        • Innere Klassen
        • Anonyme Klassen
        • Enumerations
      • You're just an object
        • Sichtbarkeit
        • Druckdarstellung
        • Gleichheit
        • Klonen
        • Die Class
        • Serialisierung
    • Java Api
      • Dokumentation
      • Strings
      • Wrapper Klassen
      • System und Runtime
      • Math
      • Exceptions
      • IO
      • Sammlungsklassen
      • AWT und Swing
      • Alle Komponenten
      • Applets
      • Threads
      • Jar
      • Classpath
    • JSP und Servlets
      • Meine erste JSP
        • Downloads
        • Installation unter Windows
        • Installation unter Linux
        • Admin und Manager
        • Webapplication
      • JSP
        • Java Code in HTML einbinden
        • Das HTTP Request - Response Modell
        • Request und Response Objekte
        • Auswerten von Formulardaten
        • Aufgaben
      • Beans
        • Die Session
        • Weitere vordefinierte Objekte
        • Java-Beans
        • Beans programmieren
        • Java-Beans in JSP nutzen
        • Aufgaben
      • Servlets
        • Nutzen der Servlets
        • Servlets programmieren
        • Servlets auf dem Server einrichten
        • Servlets mit JSP
        • Servlets includen
        • Aufgaben
      • Webapplikation
        • Filter
        • Initialisierungsparameter
        • Error Pages
        • Passwortgeschützte Verzeichnisse
        • Bibliotheken nutzen
        • Eine Webapplikation deployen
        • Ausblick: Wie geht's weiter?
        • JSP-Tags Syntaxreferenz
        • Aufgaben
  • Code
    • Web
      • Datenbankverbindungen mit Tomcat
      • Texte richtig encoden
      • HTTPS mit Tomcat
      • HTML Encoden mit Javascript
    • Java
      • Print F
      • Ein generischer Poolbuilder
      • Native Bibliotheken
      • Unique Ids
    • Java FX
      • Balls
      • Hearts
      • Planner
    • Java ME
      • The Next Big Thing
    • System
      • Vi Kommandos
  • Sidemap
  • Impressum
  • Hilfe
Home > Tutorials > Basic Java > You're just an object > Gleichheit
  • Home
  • Tutorials
    • Hello World
    • Java Konsole
    • Basic Java
      • Java Programme
      • Objektorientierte Konzepte
      • Alles über Klassen
      • You're just an object
        • Sichtbarkeit
        • Druckdarstellung
        • Gleichheit
        • Klonen
        • Die Class
        • Serialisierung
    • Java Api
    • JSP und Servlets
  • Code
  • Sidemap
  • Impressum
  • Hilfe

Gleichheit von Objekten

Wenden wir uns nun der Frage zu, wann sich zwei Objekte gleichen.

Alle Objekte bieten die equals(Object)-Methode an, mit deren Hilfe festgestellt wird, ob zwei Objekte gleich sind. Equals greift auf die Methode hashCode() der beiden Objekte zurück und vergleicht sie; etwa:

public boolean equals(Object obj) {
   return this.hashCode()==obj.hashCode();
}

HashCode wiederum erzeugt eine Repräsentanz des Objekts als Integer-Wert. In der Basisimplementierung der Klasse Object geschieht das durch Auslesen der Speicherstelle im Arbeitsspeicher. Equals liefert daher und immer nur dann true, wenn die Objekte identisch sind.

Oft ist das nicht gewünscht. Beispielsweise wäre könnte es in einigen Fällen gewünscht sein, wenn equals "true" lieferte, wenn alle Felder zweier Objekte gleich sind. Es ist daher häufig erforderlich, equals und auch hashCode zu überschreiben, um die Gleichheit zweier Objekte anhand ihrer Felder festzustellt. Das folgende Beispiel verdeutlicht den Zusammenhang:

Der Vergleich der ShowEquals-Objekte liefert false, da die Methoden der Basisklasse Object aufgerufen werden, die auf Identität prüfen. Das schlägt aber fehl, weil es zwei unterschiedliche Objekte sind, die jeweils mit „new“ erzeugt wurden.

Im Fall der Klasse ShowEqualsTrue sind die hashCode und equals–Methoden in einer Weise überschrieben, dass Sie die Daten der Objekte für den Vergleich nutzen. Da beide Objekte dieselben Datenhaben, liefert der Vergleich „true“.

Die Objektidentität lässt sich dann mit dem Vergleichsoperator „==“ feststellen.

« Druckdarstellung
You're just an object
Klonen »
Show/Hide Footer Actions

Kommentare:

Sie müssen angemeldet sein um eine Nachricht zu erstellen. Anmelden »
© 2012 Java 1. Alle Rechte vorbehalten.
Anmelden
concrete5 - open source CMS
Theme by Site5 / Mnkras.